7

これらの問題を解決するために数時間を費やしましたが、何も到達しませんでした。ネット上ではこの問題についていくつかのトピックがありますが、これを解決するための絶対的なことを言っているものはありません。

django プロジェクトで使用するために postgresql をインストールしました。

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2", # Add "postgresql_psycopg2", "postgresql", "mysql", "sqlite3" or "oracle".
        "NAME": "name",                       # Or path to database file if using sqlite3.
        "USER": "postgres",                             # Not used with sqlite3.
        "PASSWORD": "pass",                         # Not used with sqlite3.
        "HOST": "",                             # Set to empty string for localhost. Not used with sqlite3.
        "PORT": "",                             # Set to empty string for default. Not used with sqlite3.
    }
}

これは私のsettings.pyであり、エラーは

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

誰かがそれについて解決策を持っていましたか?

4

3 に答える 3

17

postgres ソケットを見つける必要があります。メインの postgres プロセス pid ( ps auxw | grep postgres) を確認し、開いている UNIX ソケット ( ) を一覧表示しますlsof -p [PID_OF_POSTGRES_PROCESS] | grep unix。このパスを のHOSTオプションに記述しますsettings.py

ディストリビューション パッケージ ( ) から Postgres をインストールするapt-get install postgresql方がはるかに簡単で (たとえば、空の HOSTsettings.pyが機能します)、ディストリビューションがセキュリティ アップデートをインストールするため、より安全です。

于 2012-05-31T11:06:16.887 に答える
12

別の可能性があります。既存のバージョンの上に新しいバージョンのPostgreSQLをインストールした場合、インストーラーがそれに非標準のポート番号を割り当てた可能性があります。

Djangoは、PostgreSQLがポート5432でリッスンすることを期待しています。Unixソケットを使用している場合でも、ソケットはポート番号にちなんで名付けられているため、これは重要です。

行を確認/etc/postgresql/<version>/main/postgresql.confしますport = nnnn。その番号が5432でない場合、それはあなたの問題です。もう1つの指標は、のソケットファイルが非標準のポート番号を使用しての/var/run/postgresqlようなものと呼ばれることです。.s.PGSQL.5433

これを修正するには、ポート番号を編集しpostgresql.confてデフォルト(5432)を使用するか、非標準のポート番号で実行する必要がある場合DATABASE_PORT = 'nnnn'は、djangoで設定しますsettings.py

ポインタをくれたErikForsbergに感謝します!

于 2012-11-21T01:25:21.850 に答える
2

最新の Fedora システムでは、この症状を引き起こすプライベート一時ディレクトリ機能が追加されています。https://fedoraproject.org/wiki/Features/ServicesPrivateTmp

この機能により、Web アプリは、デフォルトの PostgreSQL ドメイン socked が配置されているシステムの /tmp ディレクトリとは異なる tmp ディレクトリを使用するようになります。

Fedora で Apache-httpd のこの機能の systemd ディレクティブを変更するには、ファイル/usr/lib/systemd/system/httpd.serviceを編集して次のように変更PrivateTmp=trueします。PrivateTmp=false

または、ドメイン ソケットの使用を避けて、この問題を回避することもできます。

于 2014-02-10T17:24:33.593 に答える