14

OSX をバージョン 10.7.3 にアップグレードしてから、Django の「syncdb」コマンドを実行しようとすると、Postgresql 8.4.2 から次の psycopg2 エラーが表示されます。

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

問題なく psql を開くことができますが、「pg_ctl status」を実行しようとすると、次のエラーも表示されます。

pg_ctl: could not open PID file "/Library/PostgreSQL/8.4/data/postmaster.pid": Permission denied

相関関係はありますか?

4

7 に答える 7

33

私も同じ問題を抱えていました.osxを10.7.3に更新し、postgresサーバーを再起動した後、$ ./manage.py dbshellpsycopg2を介して実行しようとすると同じ問題が発生しましたが、psqlを使用してpostgresに接続する際に問題はありませんでした.

psycopg2 は新しく 10.7.3 osx で更新された postgres ライブラリを使用するため、問題は「Unix ドメイン ソケットの接続」にのみ関連しているように見えます。

psycopg2 を再インストールしようとしましたが、何も変わりませんでした。

そこで、django settings.py のデータベース セクションの HOST 値を変更し、空の文字列の代わりに'localhost'.

そしてそれは完全に機能します!

于 2012-02-07T21:20:06.567 に答える
8

Eelkeの問題は私のものと同じでした。これに対する最も簡単な修正は、追加することです

export PGHOST=/tmp

.bashrc / .zshrc / etcファイル内の環境変数(使用するものによって異なります)。

最善の解決策は、アプリの構成ファイルに特定のパスを設定することです。

于 2012-02-16T22:04:48.880 に答える
4

私の Mac で少しテストを行ったところ、私のシステムにはいくつかのコマンドに対して 2 つのバージョンがあることに気付きました。1 つのバージョンは /usr/bin にあり、もう 1 つのバージョンは /Library/PostgreSQL/9.0/bin にあります。/usr/bin のバージョンは /var/pgsql_socket/.s.PGSQL.5432 を想定しています。インストールに適したバージョンは /tmp/.s.PGSQL.5432 を想定しています。

/usr/bin のバージョンは 9.0.5 で、Apple によってインストールされています。

残念ながら、私は django についてあまり知りませんが、間違ったパスでコマンドを呼び出しているか、間違った場所からライブラリをロードしている可能性があります。

于 2012-02-05T08:29:59.503 に答える
2

シンボリックリンクを作成することで問題を解決できます:

 ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/
于 2012-02-27T16:08:45.283 に答える
2

これは最終的に私にとってはうまくいきました...

settings.py のデータベース ディクショナリの HOST 値を次のように変更します。

'ホスト': '/tmp',

ソース: http://jeffammons.net/2011/09/fixing-postgres-on-mac-10-7-tiger-for-django

于 2012-04-04T23:36:25.990 に答える
1

psycopg2を再インストールするとうまくいきました

于 2012-10-23T04:06:05.833 に答える
0

OSX 10.7.3にアップグレードした直後に、同じ問題が発生しました。PostgreSQLを再インストールすると問題が解決し、既存のデータは削除されませんでした。

于 2012-02-07T09:35:01.777 に答える