Django.db.utils.IntegrityError:(1062,键'content_type_id'&的重复条目'22-添加_& [英] django.db.utils.IntegrityError: (1062, "Duplicate entry '22-add_' for key 'content_type_id'")

查看:0
本文介绍了Django.db.utils.IntegrityError:(1062,键'content_type_id'&的重复条目'22-添加_&的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Django多个数据库路由器的概念,有不同的数据库的多个网站。基础数据库用户将登录与所有其他子网站。

当我在基本站点中尝试syncdb时,它工作正常(在任何时候),但尝试与其他站点只在第一次有效,如果我们下次尝试向上,它会抛出如下所示的整体错误

    Django.db.utils.IntegrityError:(1062,"重复条目 ‘22-Add_Somesame’for key‘content_type_id’")

一旦我删除了该项目中的多个数据库路由器设置,就意味着syncdb(在任何时候)都能正常工作。

那么这是否与多个数据库路由器有关?还有别的吗?

请对此提出建议,谢谢。

推荐答案

这里的问题与数据库路由器和Django系统对象有关。我在使用多个数据库和路由器时也遇到过同样的问题。在我的记忆中,这里的问题是Auth.Permission内容类型,它们在数据库之间混合在一起。否则,syncdb脚本会尝试在所有数据库中创建这些内容,并为某些对象创建权限内容类型,该对象的ID已为本地模型保留。

我有以下内容

BASE_DB_TYPES = (
 'auth.user',
 'auth.group',
 'auth.permission',
 'sessions.session',

)

然后在数据库路由器中:

def db_for_read(self, model, **hints):
    if hasattr(model, '_meta') and str(model._meta) in BASE_DB_TYPES:
        return 'base_db' # the alias of base db that will store users
    return None # the default database, or some custom mapping

编辑

此外,异常可能会说您正在为模型‘somesame’声明权限‘add_somesame’,而Django会自动为所有对象创建add_delete_edit_权限。

这篇关于Django.db.utils.IntegrityError:(1062,键'content_type_id'&的重复条目'22-添加_&的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆