TL; DR
解決策が必要な場合は、ここにあります。Postgresサーバーに「postgres」データベースがあることを確認してください。 psql
経由で接続して確認できます 、および/list
を実行します または/l
。 CREATE DATABASE postgres
を実行して、データベースを作成できます。 psqlで。
拡張
Djangoは、DATABASES
で指定された「デフォルト」データベースから「初期化クエリ」(おそらくテストデータベースの作成など)を実行しないことを好みます。 設定。これは本番データベースであると推定されるため、Djangoが混乱しないようにすることが最善の利益になります。
これが、テストの開始時にこれが表示される理由です(私のファイルシステムは無視してください):
/Users/dcgoss/Desktop/Pickle/PickleBackend/venv/lib/python3.4/site-packages/django/db/backends/postgresql/base.py:247:
RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed
(for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the default database instead.
RuntimeWarning
Djangoは、DATABASES
で指定されたホストで「postgres」という名前のデータベースを探します 設定では、ここでクエリを実行してテストデータベースを作成および削除します。 (注:Djangoは、設定で「postgres」データベースを明示的に指定する必要はありません。設定で指定されているデータベースサーバーでデータベースを検索するだけです)。
この「postgres」データベースが存在しない場合、Djangoはテストデータベースを作成してテストを実行できますが、テストデータベースを削除することはできません。これは、Postgresで現在接続しているデータベースを削除できないためかもしれませんが、Djangoがで指定された「デフォルト」(本番)データベースからテストデータベースを削除できなかった理由はないようです。設定。 「デフォルト」データベースを使用してテストデータベースを作成していると思われるので、それも削除できない理由はないようです。
とにかく、解決策は、単純なSQLステートメントでその「postgres」データベースを作成することでした:CREATE DATABASE postgres
。そのデータベースが作成された後、すべてが正常に機能しました。