Django не может удалить тестовую базу данных через pgbouncer
Я использую pgbouncer с Django. я добавил test_foo
базы данных к его конфигурации, чтобы иметь возможность запускать тесты, потому что, очевидно, Django не может использовать другой порт для тестовой базы данных. Теперь тестовый запуск, но в конце, когда Django пытается сбросить тестовую БД, я получаю
django.db.utils.DatabaseError: database "test_foo" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Я предполагаю, что это вызвано открытым соединением, сохраненным pgbouncer. Что я могу сделать?
1 ответ
Решение
Это не идеальное решение, но оно делает свое дело. Вы можете заставить Django использовать разные настройки базы данных при запуске модульных тестов, добавив в ваши settings.py:
if 'test' in sys.argv or 'test_coverage' in sys.argv:
# Use 5432 as db port (avoid going through pgbouncer, can't delete test DB).
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'xxx',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '5432'
},
}