我为我的django项目设置了两个数据库,一个mysql和一个postgres。
我有一个数据库路由器到位,一切都很好地工作,直到我改变了一个 CharField
与 max_length
在一个postgres模型中是300。
这个模型在postgres中,但是现在django抛出了一个关于mysql的错误: [postgres_app.TestModel.slug]: (mysql.E001) MySQL does not allow unique CharFields to have a max_length > 255.
我仔细检查了我的数据库路由器,一切正常。我还必须再次提到路由器以前的工作是正确的,并且为读、写和迁移选择了正确的数据库。这是我的路由器:
POSTGRES_APPS = ['postgres_app']
class PostgresRouter(object):
""" Controls which apps can have access to the postgres instance. """
def db_for_read(self, model,**hints):
""" Called on every read action on a model. """
if model._meta.app_label in POSTGRES_APPS:
return 'postgres'
return None
def db_for_write(self, model,**hints):
""" Called on every write action on a model. """
if model._meta.app_label in POSTGRES_APPS:
return 'postgres'
return None
def allow_relation(self, obj1, obj2,**hints):
""" Called only on migrations. Only allow relations if both models are in POSTGRES_APPS. """
return {obj1._meta.app_label, obj2._meta.app_label}.issubset(set(POSTGRES_APPS)) or None
def allow_migrate(self, db, app_label, model_name=None,**hints):
""" Called only on migrations. """
if db == 'postgres':
return app_label in POSTGRES_APPS
else:
return app_label not in POSTGRES_APPS
这是我的模型:
class TestModel(models.Model):
slug = models.CharField(max_length=300, blank=True, null=True, unique=True)
所以问题是它是否是django中的一个bug,如果不是,那么我如何告诉django它正在查看错误的数据库。
暂无答案!
目前还没有任何答案,快来回答吧!