好的,我正在将数据库从 sqlite 迁移到 mysql,我有一些错误,但我已经解决了它们。现在我对这个选项有疑问,因为我不知道如何禁用它。 我试过了
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'slave',
'USER': 'root',
'PASSWORD': 'root',
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
},
'HOST': '',
'PORT': '',
}
}
但它不起作用,我不知道为什么。
Ofc 我使用 json 文件进行迁移
python manage.py dumpdata --indent 2 --natural > dump.json
python manage.py loaddata dump.json
当我开始加载数据时,我可以看到:
SET SQL_AUTO_IS_NULL = 0
SET foreign_key_checks=0
但一段时间后:
SELECT (1) AS `a` FROM `xxx` WHERE `xxx`.`id` = 8 LIMIT 1
SET foreign_key_checks=1
然后我看到异常。 Traceback 并不重要,因为它与外键有关,您可以在此处阅读更多内容
http://coffeeonthekeyboard.com/django-fixtures-with-circular-foreign-keys-480/
我知道我需要禁用此选项。
我试过了:
http://djangosaur.tumblr.com/post/7842592399/django-loaddata-mysql-foreign-key-constraints
但正如我所说,它不起作用。
谁能帮忙...
最佳答案
你可以把它放在你的 settings.py
的末尾:
import sys
if 'loaddata' in sys.argv:
# only change this for loaddata command.
DATABASES['default']['OPTIONS'] = {
"init_command": "SET foreign_key_checks = 0;",
}
关于python - Django:如何将外键检查设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793990/