マウンテンライオンポストグリスは接続できませんでした
-
12-12-2019 - |
質問
マウンテンライオンへの更新後私のPostgres Doestの仕事。それはまだ実行中ですが、私のアプリケーションはもう接続できなくなりました。
$ 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"?
.
私はまだpsqlに接続することができます/ library/postgresql/9.1 / bin/psql -u postgres
は正しい場所を指していないようです
解決 5
それをアンインストールして再インストールすることでこの問題を解決しました
他のヒント
私は同じ問題を抱えていました。個人的に私はPostgresインストーラ(PostgreSQL-9.1.3-1-osx.dmg)から再インストールし、My Macを再起動し、すべてが再び大丈夫です。P.S.ZAPを再インストールしなかったデータベース:)
使用しているpsql
を確認してください。Herokuの Postgres.app サーバーを使用している間、私は同じ問題を抱えていました。Postgresライブラリを使用するか、インストールされている/usr/bin/psql
へのフルパスを使用するように$PATH
を設定します。
デフォルトのUNIXドメインソケットパスはlibpqでハードコードされています。 実行される可能性があるのは、アップグレードの前に、アプリケーションはPostgresワンクリックインストーラによってインストールされたLibpqライブラリを使用したことです。アップグレード後、このライブラリの異なるバージョンがピックアップされました。
問題を回避するには、プログラマの観点から、デフォルトに頼る代わりにソケットディレクトリを指定できます。 正しいディレクトリを見つけている場合は、すでにわからない場合は、スーパーユーザー(一般にPostgres)として任意のデータベースに接続し、SQLの問題:
SHOW unix_socket_directory;
.
は、Connect呼び出しのホストフィールドで取得されたパスでアプリを変更または再設定します(例えば、接続文字列:host=/path/to/socket dbname=d user=u
)。LIBPQは、ホスト名またはIPアドレスとは対照的にスラッシュで始まるため、UNIXソケットディレクトリとして認識します。
どういうわけかこのソケットファイルがドットのために隠されることを完全に忘れました。ソケットが実際にそこにあるかどうかを確認している場合は、必ずls -A /tmp/.s.PGSQL.5432
を使用してください。
My Postgresアプリは、次のようにした後にPSQLから再度接続を受け入れました。手順3で何があると思います。
- Postgresアプリを終了します。
- 端末タイプ
postgres -D ~/Library/Application\ Support/Postgres/var
。Postgresアプリを使用している場合、これはデータディレクトリです。Postgresアプリを使用していない場合は、データディレクトリが本当に何があるかを調べる必要があります。 - 入ってくるトラフィックを許可するかどうかを尋ねるOS Xからのプロンプトを取得しました。私ははいをクリックしました。
- 別のターミナルタブタイプの
psql
。正常に接続する必要があります。 - psqlを終了するための
\q
を入力します。 - Postgresを実行しているタブに戻り、Postgresを停止するには
ctrl c
と入力します。 - Postgresアプリを起動します。PSQLは働くべきです。
問題は、マウンテンライオンに搭載されていることです。これは、地元のソケットファイルをインストーラからの異なる場所に検索することでPostgresを接続しようとします。Postgres Binフォルダを最初に含めるか、またはデフォルト/ usr / bin / psqlをインストール上の1つに置き換えるようにパス変数を変更することもできます。