我在应用程序中配置了两个数据库:
DATABASES = {
'default': { ... }
'legacy': { ... }
}
旧数据库仅在应用程序的特定部分中使用(为了方便起见,我将其添加为第二个数据库)。
这正常工作,除了当我尝试运行测试时,Django尝试为旧数据库创建测试数据库,从而导致错误:
在创建测试数据库时出错:(1044,“拒绝用户...访问数据库'test _...'”)
如何告诉Django不要为第二个旧数据库创建测试数据库?
我认为设置以下内容会起作用:
DATABASES['legacy']['TEST'] = {
'NAME': None,
'CREATE_DB': False
}
但这似乎无济于事
答案 0 :(得分:1)
似乎是多重数据库和Django中测试的常见问题。这是我通常的处理方式。
DATABASES = {
'default': { ... }
'legacy': { ... }
}
# You can add here any other type of control (not prod, debug == True, etc.)
if "test" in sys.argv:
del DATABASES["legacy"]
# Or
DATABASES = { "default": DATABASES["default"] }
在只有一个设置文件的情况下,这非常有用,您可以轻松地适应其他情况。
如果要处理许多数据库,另一种选择可能是从头开始在测试设置内进行
DATABASES = {
'default': { ... }
'legacy': { ... }
}
# You can add here any other type of control (not prod, debug == True, etc.)
if "test" in sys.argv:
DATABASES = {"default": {}}
DATABASES["default"]["ENGINE"] = "django.db.backends.sqlite3"
# Etc... Add want you need here.