django对错误数据库的model字段抛出错误

irlmq6kh  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(170)

我为我的django项目设置了两个数据库,一个mysql和一个postgres。
我有一个数据库路由器到位,一切都很好地工作,直到我改变了一个 CharFieldmax_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它正在查看错误的数据库。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题