我正在使用django多个数据库路由器概念,有多个站点具有不同的数据库。基础数据库用户将登录所有其他子站点。
当我在基站中尝试 syncdb 时,其工作正常(在任何时候),但尝试 syncdb 与其他网站仅在第一次工作,如果我们下次尝试-wards它会抛出如下所示的整数错误
一旦我删除了该项目中的多个数据库路由器设置,意味着syncdb可以正常工作(在任何时候)。
那么这涉及到多个db路由器吗?或者还有什么?
请有人就此提出建议,谢谢。
答案 0 :(得分:1)
这里的问题是db router和django系统对象。多个数据库和路由器遇到了同样的问题。我记得这里的问题是auth.permission内容类型,它们在数据库之间混合。 syncdb脚本否则会尝试在所有数据库中创建这些,并且它会为某个对象创建权限内容类型,该id已经为本地模型保留。
我有以下
BASE_DB_TYPES = (
'auth.user',
'auth.group',
'auth.permission',
'sessions.session',
)
然后在db router中:
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
修改强>:
此外,例外情况可能表示您为模型“add_somesame
”声明了权限“somesame
”,而Django会自动创建add_
,delete_
,所有对象的edit_
权限。