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'
        },
    }
Другие вопросы по тегам