完整性错误:(1062,“密钥 2 的重复条目‘3-add_author’”)
题
数据库是MySQL。
我使用 django.contrib.auth。
这是所有信息:
manage.py dumpdata auth > my_auth.json --natural --exclude 内容类型
然后我删除了整个数据库(删除数据库my_database),并创建了一个新数据库(创建数据库new_database)(使用./manage.pysyncdb创建所有表)。
然后
管理.py 加载数据 my_auth.json
我收到一个错误:
完整性错误:(1062,“密钥 2 的重复条目‘3-add_author’”)
有什么问题?
任何帮助将不胜感激。谢谢你!
解决方案
(更新)
你是对的(下面是你的评论)。问题确实在于 auth.permission
.
当你跑步时 syncdb
, auth.permission
是 自动填充所有已安装型号的默认值. 。任何后续运行 syncdb
将为最近添加的任何模型添加新条目。
如果在稍后阶段您重置数据库并运行 syncdb
同样,这些值将被重新填充,并且根据检查已安装模型的顺序,可能会以不同的顺序添加关联的权限,从而为其提供与之前数据库不同的 ID(如果模型是分阶段安装的)。
为了避免这个问题,您可以离开 auth.permission
倾倒你的时 auth
数据(正如您在评论中已经指出的那样),或重置 auth.permission
加载数据转储之前的表。
另外,使用很重要 自然键 (--natural
)在转储数据时,使其不会使用其整数 id 引用相关数据(在另一个数据库中加载时可能会有所不同)。这个功能是 Django 1.2 中引入.
不隶属于 StackOverflow