В моем проекте django у меня есть несколько соединений с базой данных:
например.
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "awesome",
...
},
"other_1": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "other_1",
"TEST": {"MIRROR": default}
...
},
"other_2": {
"ENGINE": "django.db.backends.mysql",
"NAME": "other_2",
"TEST": {"MIRROR": default}
}
}
Примечание:
-
default
и other_1
оба являются postgres
бэкэндами и
other_2
- это mysql
бэкэнд.
- Я добавил
"TEST": {"MIRROR": default}
к дополнительной конфигурации базы данных, чтобы избежать создания этих баз данных во время тестирования. Смотрите эту ссылку .
Проблема:
Когда я запускаю тест, он жалуется на Unknown database 'test_awesome'
, трассировка стека показывает, что он из бэкэнда MYSQL:
Traceback (most recent call last):
File "/Users/jlin/virtualenvs/awesome-1SH6mAZ2/lib/python3.6/site-packages/django/test/testcases.py", line 1005, in setUpClass
if not connections_support_transactions():
File "/Users/jlin/virtualenvs/awesome-1SH6mAZ2/lib/python3.6/site-packages/django/test/testcases.py", line 970, in connections_support_transactions
...
File "/Users/jlin/virtualenvs/awesome-1SH6mAZ2/lib/python3.6/site-packages/MySQLdb/__init__.py", line 85, in Connect
return Connection(*args, **kwargs)
File "/Users/jlin/virtualenvs/awesome-1SH6mAZ2/lib/python3.6/site-packages/MySQLdb/connections.py", line 204, in __init__
super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1049, "Unknown database 'test_awesome'")
Если я закомментирую соединение other_2
, тест выполнится нормально.