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

Django 防止在特定数据库上运行测试迁移,django,cockroachdb,Django,Cockroachdb,我有一个Django应用程序连接到2数据库。 Django将它们视为PostgreSQL数据库,但其中一个不是PostgreSQL(但使用PostgreSQL二进制协议,因此它使用相同的驱动程序(CockroachDB) 目前,在测试运行期间,Django会尝试在两个数据库上运行迁移 如何避免这种情况?我仍然需要在测试期间访问数据库,但不需要运行迁移(因为它目前不兼容,迁移是从Django外部运行的) 您可以添加一个阻止迁移的数据库。假设livedb是您不想迁移的数据库,它将如下所示: clas

我有一个Django应用程序连接到2数据库。 Django将它们视为PostgreSQL数据库,但其中一个不是PostgreSQL(但使用PostgreSQL二进制协议,因此它使用相同的驱动程序(CockroachDB)

目前,在测试运行期间,Django会尝试在两个数据库上运行迁移

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

您可以添加一个阻止迁移的数据库。假设
livedb
是您不想迁移的数据库,它将如下所示:

class LiveDBRouter:

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        Do not allow migrations on livedb.
        """
        return db != 'livedb'
然后配置该路由器:

DATABASE_ROUTERS = ['path.to.LiveDBRouter']

如果它使用postgres驱动程序,但位于不同的位置,那么您是否可以对主机、用户和密码进行不同的设置?它们已经不同了,但Django正在尝试在两个数据库上运行迁移以进行测试,这在这种情况下不起作用(因为CockroachDB不支持与PostgreSQL相同级别的SQL)谢谢,我刚刚尝试过,但在运行测试时似乎忽略了此设置?即使在定义了数据库并设置了数据库路由器之后,它仍会继续尝试创建数据库
DATABASE_ROUTERS = ['path.to.LiveDBRouter']