IntegrityError:(1062,“重复条目'3-add_author'用于密钥2”)

时间:2011-09-12 07:41:07

标签: django loaddata dumpdata

数据库是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'”)

有什么问题?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

(更新)

你是对的(你的评论如下)。 auth.permission确实存在问题。

当您运行syncdb时,auth.permissionpopulated automatically with default values for all installed modelssyncdb的任何后续运行都将为最近添加的任何模型添加新条目。

如果稍后您重置数据库并再次运行syncdb,则将重新填充值,并根据检查安装的模型的顺序,可以按不同的顺序添加关联的权限来自以前数据库的不同ID(如果模型分阶段安装)。

要避免此问题,您可以在转储auth.permission数据时保留auth(正如您在评论中已经指出的那样),或者在重置auth.permission表之前加载数据转储。

此外,在转储数据时使用natural keys--natural)非常重要,这样它就不会使用整数id引用相关数据(在另一个id中加载时可能不一样) D b)。此功能为introduced in Django 1.2