数据库是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 中引入.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top