2016-08-17 21 views
4

をドロップして再作成することができません。私は、Mac OS Xジャンゴテスト - 私は<code>/manage.py test --settings=myproj.settings.local</code></p> <p>を実行すると、テスト用データベース

にDjangoの1.9、Postgresの9.5.1を実行していますが、私は得る:

Creating test database for alias 'default'... 
Creating test database for alias 'userlocation'... 
Got an error creating the test database: database "test_myproj" already exists 

Type 'yes' if you would like to try deleting the test database 'test_myproj', or 'no' to cancel: yes 
Destroying old test database for alias 'userlocation'... 
Got an error recreating the test database: database "test_myproj" is being accessed by other users 
DETAIL: There is 1 other session using the database. 

だから、This postあたりとして、私が実行します。

SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 

    pid <> pg_backend_pid() 

    AND datname = 'test_myproj' 
    ; 

に進みますエラーを取得するためだけにテストを再試行してください。DETAIL: There is 1 other session using the database.

プロセスリストでは、データベースに何も付いていません。私はサーバーを停止して再起動しますが、テストを実行する管理コマンドでは、データベースに別のセッションが接続されているというエラーが表示されます。

これは本物の頭のスクラッチャーです。これまでにこれまで見たことはありませんでした。他に誰かがいますか?

マイセッティング:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'myproj', 
     'USER': 'myuser', 
     'PASSWORD': 'mypass', 
     'HOST': 'localhost', 
     'PORT': '', 
    }, 
    'userlocation': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 
     'NAME': 'og_myproj', 
     'USER': 'og_myuser', 
     'PASSWORD': 'mypasswd', 
     'HOST': 'localhost', 
     'PORT': '5432', 
    } 
} 
+0

私は解決策はありませんが、テストの場合の両方のデータベースは 'test_myproj'という名前になります - デフォルトでは動作し、userlocationではこのデータベースは既存のものとして検出されます。既存のセッションは、テストを実行している現在のdjangoがまだ使用しているセッションです。スクリプトが終了した後はもうセッションがありません;) – dahrens

+1

[docs](https://docs.djangoproject.com/en/1.10/topics/testing/advanced/#controlling-creation-order-for -test-databases) – dahrens

+0

@ダーレンズ、ありがとう。設定ファイルを少し修正し、魅力的に動作します。 – fiacre

答えて

5

sudo /etc/init.d/postgresql restartは、再起動は、この問題に

+0

私はMacで '$ pg_ctl -D/usr/local/var/postgres -l /usr/local/var/postgres/server.log restart'そして' ./manage.py test --settings = ohmgearです。 settings.local --no-input'は同じエラーを返します: 'エイリアス 'userlocation'の古いテストデータベースを破棄します... テストデータベースを再作成する際にエラーが発生しました:データベース" test_og_myproj "が存在しません。 ' – fiacre

+0

"テストを実行する管理コマンドは、データベースに接続された別のセッションが存在するというエラーを表示します。 - これを試してみました – fiacre

0

詳細を解決することがありますデータベースを使用して1つの、他のセッションがあります。

このメッセージは、テストデータベースがpg admin uiで開いていて、同時にdjangoテストを実行しようとしているときに表示されます。 dbを削除する前に、django/psycopg2はそのデータベースでアクティブなセッションがあるかどうかをチェックします。 pg adminのサーバとの接続を閉じても動作します。あなたがdbまたはシェルに接続しているかどうか確認してください。サーバーを再起動する必要はありません。

+0

テストが正常に実行されたが、これが表示されるが、これはdjango.db.utils.OperationalErrorを表示している:現在オープンしているデータベースを削除できない:Djangoはpostgresデータベースに接続する必要があり、pg_hbaで定義する必要がある。 conf。 –

関連する問題

 関連する問題