my_auth.json --natural --e-6ren">
gpt4 book ai didi

django - IntegrityError : (1062, "Duplicate entry ' 3-add_author' for key 2")

转载 作者:行者123 更新时间:2023-12-03 07:51:24 24 4
gpt4 key购买 nike

数据库是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, "Duplicate entry '3-add_author' for key 2")

有什么问题?

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

最佳答案

(更新)

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

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

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

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

此外,使用 natural keys 也很重要(--natural) 转储数据时,这样它就不会使用其整数 id 引用相关数据(在另一个数据库中加载时可能不相同)。此功能是 introduced in Django 1.2 .

关于django - IntegrityError : (1062, "Duplicate entry ' 3-add_author' for key 2"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7384689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com