8

我在 Django 中使用 pgbouncer。我已将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 存储的开放连接引起的。我能做些什么?

4

1 回答 1

8

这不是完美的解决方案,但可以解决问题。您可以通过添加到您的 settings.py 来强制 Django 在运行单元测试时使用不同的数据库设置:

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'
        },
    }
于 2011-11-18T20:09:29.073 回答