8

Djangoでpgbouncerを使用しています。test_fooどうやらDjangoはテストDBに別のポートを使用できないため、テストを実行できるようにデータベースを構成に追加しました。これでテストが実行されますが、最後に、Django がテスト DB を削除しようとすると、

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 に答える