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