防止测试迁移在特定数据库上运行

时间:2018-09-10 10:45:13

标签: django cockroachdb

我有一个Django应用程序connectinig到2数据库。 在Django中,这两个数据库都被视为PostgreSQL数据库,但其中一个不是PostgreSQL(而是使用PostgreSQL二进制协议,因此它使用相同的驱动程序(CockroachDB)。

当前看来,在测试运行期间,Django尝试在两个数据库上运行迁移。

如何避免这种情况?我仍然需要在测试过程中可以访问数据库,但是不需要运行迁移(因为它目前不兼容,并且迁移是从Django外部运行的)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',

         ...
    },
    'livedb': {
        'ENGINE': 'django.db.backends.postgresql',
         ...
    }
}

1 个答案:

答案 0 :(得分:2)

您可以添加防止迁移的database router。假设type User{ name: String! email: String! @unique password: String! applications: [Application!]! qualifications: [Qualification!]! employer: Employer accessRight: AccessRight } 是您不想迁移的数据库,则它看起来像这样:

livedb

然后配置该路由器:

class LiveDBRouter:

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        Do not allow migrations on livedb.
        """
        return db != 'livedb'