2015-04-07 78 views
2

由于我从1.7升级到Django 1.8,我得到了这个外键约束错误。Django 1.8,syncdb不工作,抛出一个外键约束错误

File "c:project\env\lib\site-packages\mysql_python-1.2.5-py2.7-win32.egg/MySQLdb\connections.py line 36, in defaulterrorhandler raise errorclass, errorvalue, 

Django.db.utils.IntergrityError: 'Cannot add foreing key contraint 

什么是一些错误的使用Django 1.8(最新版本)?

回答

2

试试这个

DATABASES = { 
'default': { 
    ...   
    'OPTIONS': { 
     "init_command": "SET foreign_key_checks = 0;", 
    }, 
    'STORAGE_ENGINE': 'MyISAM/INNODB/ETC' 
} 
} 
+0

是的,它工作。谢谢。 – user2307087

+0

这正是我所期待的。奇迹般有效。 –

0

您是否制作了所有的应用程序迁移?如果不是这样,你可能会遇到数据库表的创建顺序错误的问题,这会给你这个错误。

如果你有一个现有的Django 1.7的项目,那么你需要创建初始迁移文件,然后假的初始迁移,这里描述

https://docs.djangoproject.com/en/1.8/topics/migrations/#adding-migrations-to-apps

创建

$ python manage.py make migrations your_app_label 
迁移

然后伪造申请

$ python manage.py migrate --fake-initial your_app_label 
+0

哦,你不应该在Django 1.8中使用syncdb;它已被新的迁移代码所取代。详情请参阅https://docs.djangoproject.com/en/1.8/topics/migrations。 – Rachel