数据库是MySQL。
我使用的是django.contrib.auth。
以下是所有信息:
manage.py dumpdata auth> my_auth.json --natural --exclude contenttypes
然后我删除了整个数据库(drop database my_database),并创建了一个新数据库(create database new_database)(使用./manage.py syncdb创建所有表)。
然后
manage.py loaddata my_auth.json
我收到了错误消息:
IntegrityError:(1062,“密钥2的重复条目'3-add_author'”)
有什么问题?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:4)
你是对的(你的评论如下)。 auth.permission
确实存在问题。
当您运行syncdb
时,auth.permission
为populated automatically with default values for all installed models。 syncdb
的任何后续运行都将为最近添加的任何模型添加新条目。
如果稍后您重置数据库并再次运行syncdb
,则将重新填充值,并根据检查安装的模型的顺序,可以按不同的顺序添加关联的权限来自以前数据库的不同ID(如果模型分阶段安装)。
要避免此问题,您可以在转储auth.permission
数据时保留auth
(正如您在评论中已经指出的那样),或者在重置auth.permission
表之前加载数据转储。
此外,在转储数据时使用natural keys(--natural
)非常重要,这样它就不会使用整数id引用相关数据(在另一个id中加载时可能不一样) D b)。此功能为introduced in Django 1.2。