11

マウンテンライオンにアップデートした後、postgresは機能しません。まだ実行中ですが、アプリケーションが接続できなくなりました。

$ ps aux | grep postgres
postgres         204   0.0  0.0  2446960    836   ??  Ss    7:31AM   0:00.59 postgres: stats collector process    
postgres         203   0.0  0.1  2478732   2240   ??  Ss    7:31AM   0:00.41 postgres: autovacuum launcher process    
postgres         202   0.0  0.0  2478600    584   ??  Ss    7:31AM   0:00.34 postgres: wal writer process    
postgres         201   0.0  0.0  2478600    784   ??  Ss    7:31AM   0:00.48 postgres: writer process    
postgres          95   0.0  0.0  2446960    368   ??  Ss    7:31AM   0:00.11 postgres: logger process    
postgres          64   0.0  0.2  2478600   7972   ??  Ss    7:31AM   0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data
anezio         10205   0.0  0.0  2432768    624 s000  R+    8:01AM   0:00.00 grep postgres

そして私のアプリケーションはこのエラーを返しています:

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"?

コマンド/Library/PostgreSQL/9.1/bin/psql-Upostgresを使用してpsqlに接続できます

何かが正しい場所を指していないようです

4

6 に答える 6

8

私はちょうど同じ問題を抱えていました。個人的には、Postgresインストーラー(私の場合はpostgresql-9.1.3-1-osx.dmg)から再インストールし、Macを再起動すると、すべて正常になりました。psの再インストールは私のデータベースを破壊しませんでした:)

于 2012-07-27T13:39:27.233 に答える
5

どちらを使用しているかを確認してpsqlください。HerokuのPostgres.appサーバーを使用しているときに同じ問題が発生し、設定/usr/bin/psqlに基づいてAppleのクライアントを使用していることがわかりました。$PATHPostgresライブラリを使用するように設定するか$PATH、インストールされているへのフルパスを使用しますpsql

于 2012-08-02T23:52:52.840 に答える
2

デフォルトのUnixドメインソケットパスはlibpqにハードコードされています。アップグレード前は、アプリケーションがPostgresワンクリックインストーラーによってインストールされたlibpqライブラリを使用していましたが、アップグレード後は、このライブラリの別のバージョンが取得される可能性があります。

この問題を回避するには、プログラマーの観点から、デフォルトに依存する代わりにソケットディレクトリを指定できます。まだわからない場合に正しいディレクトリを見つけるには、スーパーユーザー(通常はpostgres)として任意のデータベースに接続し、SQLで発行します。

SHOW unix_socket_directory;

次に、接続呼び出しのホストフィールドで取得したパスを使用してアプリを変更または再構成します(たとえば、接続文字列:) host=/path/to/socket dbname=d user=u。Libpqは、ホスト名やIPアドレスではなくスラッシュで始まるため、UNIXソケットディレクトリとして認識します。

于 2012-07-27T13:02:30.723 に答える
1

どういうわけか、このソケットファイルがドットのために非表示になることを完全に忘れました。ls -A /tmp/.s.PGSQL.5432ソケットが実際にそこにあるかどうかを確認する場合は、必ず使用してください。

次の操作を行った後、postgresアプリがpsqlからの接続の受け入れを再開しました。ステップ3と関係があると思います。

  1. postgresアプリを終了します。
  2. ターミナルタイプpostgres -D ~/Library/Application\ Support/Postgres/varで。postgresアプリを使用している場合、これはデータディレクトリです。postgresアプリを使用していない場合は、データディレクトリが実際に何であるかを確認する必要があります。
  3. OS Xから、着信トラフィックを許可するかどうかを尋ねるプロンプトが表示されました。はいをクリックしました。
  4. 別のターミナルタブタイプpsqlで。正常に接続する必要があります。
  5. タイプ\qしてpsqlを終了します。
  6. postgresを実行しているタブに戻り、「postgresctrl cを停止する」と入力します。
  7. postgresアプリを起動します。psqlは機能するはずです。
于 2013-08-10T21:22:56.400 に答える
0

私はそれをアンインストールして再インストールすることでこの問題を解決しました

于 2013-06-26T00:43:09.590 に答える
0

問題は、mountain lionに独自のpsqlクライアント(/ usr / bin / psql)が付属していることです。このクライアントは、インストーラーとは別の場所にあるローカルソケットファイルを検索してpostgresに接続しようとします。PATH変数を変更して、最初にpostgres binフォルダーを含めるか、デフォルトの/ usr / bin/psqlをインストールにあるものに置き換えることができます。

于 2013-07-03T14:00:49.000 に答える