2015-06-28 6 views
6

मेरे पास एक नया नया मारिया डीबी सेवा (संस्करण: 5.5.41-मारियाडीबी) है और मेरे Django (1.8.2) एप्लिकेशन के लिए एक नया डेटाबेस बनाया है। डेटाबेस डिफ़ॉल्ट रूप से innoDB का उपयोग करके बनाया गया था।Django माइग्रेशन: तालिका त्रुटि नहीं बना सकता: 150

class UserProfile(models.Model): 
    user = models.OneToOneField(User, unique=True) # django's default user model 

जब मैं अजगर manage.py चलाने विस्थापित:

मैं एक मॉडल है कि इस तरह दिखता है। मुझे निम्न त्रुटि मिलती है:

File "/home/vagrant/envs/leo/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute 
    self.errorhandler(self, exc, value) 
    File "/home/vagrant/envs/leo/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
django.db.utils.OperationalError: (1005, "Can't create table 'leo.#sql-bcd_1f' (errno: 150)"). 

मैं क्या गलत कर रहा हूं और मैं इसे कैसे ठीक कर सकता हूं?

+0

पर मेरे जवाब देने के लिए एक नजर डालें http://stackoverflow.com/questions/29447863/django-mysql-error-creating-tables/37397470#37397470 हो सकता है कि किसी ने मेरे सुझाव – serguitus

उत्तर

0

मैं 1.7.9 Django में डाउनग्रेड करके इस को हल करने में कामयाब रहे। यह

0

OneToOneField सिर्फ इस तरह अद्वितीय विशेषता की जरूरत नहीं है,:

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
+0

उपयोग कर सकते हैं मैं अद्वितीय बिना इसे करने की कोशिश = सही विशेषता है लेकिन एक ही समस्या है – CraigH

+0

क्या आपके प्रोजेक्ट या ऐप में कोई अन्य मॉडल है? – hongshuning

+0

हां, लेकिन मैंने उन सभी को समस्या निवारण के लिए टिप्पणी की, कोई भाग्य – CraigH

2

डाउनग्रेड करने के तुरंत बाद काम करता था, मुझे django 1.8 के तहत एक ही समस्या थी, केवल अंतर यह है कि मैं MySQL का उपयोग कर रहा हूं और मारियाडीबी नहीं।

utf8_unicode_ci से utf_general_ci में डेटाबेस के एन्कोडिंग को बदलने से मेरे लिए समस्या हल हो गई।

+0

क्या आप यह समझा सकते हैं कि यह कैसे करें? –

3

यह त्रुटि तब भी हो सकती है जब आप माइग्रेशन फ़ाइलों को नहीं बनाते। वास्तविक माइग्रेशन से पहले makemigrations चलाने के लिए सुनिश्चित रहें।

python manage.py makemigrations <app_name> 
python manage.py migrate 
1

यह विचित्र MySQL त्रुटि explained here है। मुझे यकीन नहीं है कि आपका Django ऐप इसे कैसे ट्रिगर कर रहा है।

+0

'./manage.py माइग्रेट' चलाते समय मुझे एक ही समस्या थी। मेरे डीबी में सभी माईसाम टेबल थे लेकिन डिफ़ॉल्ट इंजन InnoDB पर सेट किया गया था। इस प्रकार सभी नई टेबल इनो डीबी के रूप में बनाई जाएंगी जिससे '1005' त्रुटि हुई। –

संबंधित मुद्दे