2015-04-07 2 views
2

Поскольку я обновляюсь до Django 1.8 от 1.7, у меня есть эта ошибка ограничения внешнего ключа.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

О, и вы не должны использовать syncdb в Django 1.8; он был заменен новым кодом миграции. Подробнее см. Https://docs.djangoproject.com/en/1.8/topics/migrations. – Rachel

Смежные вопросы