पर एक विदेशी के संबंध बदलें मैं अपने Django ऐप के साथ दक्षिण का उपयोग कर रहा हूँ। मेरे पास दो मॉडल हैं जिन्हें मैं संबंध OneToOneField
संबंध रखने के संबंध में बदल रहा हूं। जब मैंने अपने देव डेटाबेस पर यह माइग्रेशन चलाया, तो यह ठीक हो गया। जब परीक्षण डेटाबेस बनाने के हिस्से के रूप में माइग्रेशन चलाया जाता है, तो नवीनतम माइग्रेशन एक MySQL 1005 त्रुटि के साथ विफल रहता है: "तालिका mydb नहीं बना सकता। # Sql-3249_1d (errno: 121)"। कुछ गूगलिंग करने से पता चला कि यह आमतौर पर मौजूदा बाधा के समान नाम के साथ बाधा जोड़ने की कोशिश करने में एक समस्या है। प्रवास में विशिष्ट लाइन है कि उस पर विफल रहता है:Django - OneToOne
db.alter_column('myapp_mymodel', 'othermodel_id', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['myapp.OtherModel'], unique=True))
db.create_unique('myapp_mymodel', ['othermodel_id'])
:
class MyModel(models.Model):
othermodel = models.ForeignKey(OtherModel)
class MyModel(models.Model):
othermodel = models.OneToOneField(OtherModel)
जो प्रवास में निम्नलिखित बयानों उत्पन्न करने के लिए:
संबंध से बदल गया था
लेकिन create_unique
कॉल पर असफल होने की बजाय, यह 01 पर विफल रहा हैकॉल करें। मैं निम्न आदेश दौड़ा देखने के लिए एसक्यूएल उत्पन्न किया जा रहा था:
python manage.py migrate myapp 0010 --db-dry-run --verbosity=2
और यह
myapp:0010_auto__chg_field_mymodel_othermodel__add_unique_mymodel
= ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []
= SET FOREIGN_KEY_CHECKS=1; []
= ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []
यह अजीब है कि यह ADD CONSTRAINT
दो बार चलाने के लिए कोशिश कर रहा है लगता है मुद्रित लेकिन अगर मैं db.create_unique
को दूर कॉल करें, जब मैं इसे --db-dry-run
के साथ चलाता हूं तो कोई एसक्यूएल उत्पन्न नहीं होता है, लेकिन अगर मैं इसे वास्तविक के लिए चलाता हूं तो मुझे अभी भी त्रुटि मिलती है।
मैं यहां एक नुकसान में हूं, किसी भी मदद की सराहना की जाती है।
मैं बिल्कुल वैसा ही माइग्रेशन बनाया है कुछ दिन पहले और यह ठीक भाग गया। क्या आप एक ही डेटाबेस को एक अलग डेटाबेस बैकएंड के साथ आज़मा सकते हैं (मैंने इसे PostgreSQL डेटाबेस पर किया था)। इसके अलावा, अपने दक्षिण संस्करण की जांच करें। – emyller
इच्छा है कि मैं मदद कर सकता हूं - मैंने परिवर्तन किया है, यह एक ही पायथन और एसक्यूएल कोड उत्पन्न करता है, और माइग्रेशन Win32 के लिए mysql 5.1.56 का उपयोग करके ठीक है। – Hannele
इसे दक्षिण मेलिंग सूची पर पूछें और आपको उत्तर खोजने की संभावना है। –