django不能通过pgbouncer丢弃测试数据库

时间:2011-11-08 08:35:20

标签: django postgresql pgbouncer

我正在使用带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存储的开放连接引起的。我能做什么?

1 个答案:

答案 0 :(得分:6)

这不是完美的解决方案,但它可以解决问题。通过添加到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'
        },
    }