3

数据库是 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 加载数据 my_auth.json

我有一个错误:

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

有什么问题?

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

4

1 回答 1

4

(更新)

你是对的(请在下面发表评论)。问题确实出在auth.permission.

运行时syncdbauth.permission自动填充所有已安装模型的默认值。任何后续运行都syncdb将为最近添加的任何模型添加新条目。

如果在稍后阶段您重置数据库并syncdb再次运行,这些值将被重新填充,并且根据检查已安装模型的顺序,关联的权限可能会以不同的顺序添加,从而赋予它与以前数据库不同的 ID(如果模型分阶段安装)。

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

此外,在转储数据时使用 自然键--natural这个特性是在 Django 1.2 中引入的

于 2011-09-12T09:39:49.050 回答