【问题标题】:django can't drop the test DB via pgbouncerdjango 无法通过 pgbouncer 删除测试数据库
【发布时间】:2011-12-24 06:24:52
【问题描述】:

我在 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 存储的打开连接引起的。我能做些什么?

【问题讨论】:

  • 这是一个令人沮丧的问题。

标签: django postgresql pgbouncer


【解决方案1】:

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

【讨论】:

  • 很好的答案,工作正常。小调整:编写这样的代码来更改端口号,假设这是在您的正常 DATABASES 设置之后:if 'test' in sys.argv or 'test_coverage' in sys.argv: DATABASES['default']['PORT'] = 5432
猜你喜欢
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多