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