3

最初に「ポート ファイルが正しい用語ではない」場合はお詫びしますが、Postgres は私の長所の 1 つではありません。私のシステムから行方不明になったように見えるので、このポートファイルがどのように見えるべきかを見つけようとしています。説明と私の(かなり間違っている可能性がある)思考の軌跡を読んでください。

Railsプロジェクトで(postgres gemを介して)Postgresを使用していますが、HTMLの更新中に動作を停止した昨日まで正常に動作していました。通常の方法でレールサーバーを再起動しました

レールS

取得するためだけに:

/Users/pedr/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:1161:「初期化」: サーバーに接続できませんでした: いいえそのようなファイルまたはディレクトリ (PG::Error) \n \n
サーバーはローカルで実行されており、Unix ドメイン ソケット "/tmp/.s.PGSQL.5432" で接続を受け入れていますか?

私はLunchyを使用してpostgresを開始および停止していますが、問題はないようです。

ただし、次のターミナル コマンドを使用して、Postgres がリッスンしているポートを確認しました。

sudo lsof -p 286| awk '$5 == "unix" && $NF ~ /\// { print $NF }'

そして、それは何もリストしません。だから、どういうわけかポートが削除されたと思います。

ポートについての理解が限られているため、次の場所でポート ファイルを探す必要があります。

/tmp/.s.PGSQL.5432

次のファイルがあります。

.s.PGSQL.5432.ロック

tmp ディレクトリ

私が理解している限り、このファイルは欠落しているポートファイルの編集を防ぎます。

Time Machine を使用してこの見つからないファイルを見つけようとしましたが、Time Machine は /tmp ディレクトリに何も保存していないようです。

では、どうすればこのファイルを再作成できますか? それはどのように見えるべきですか?

[アップデート]

@wildplasser の提案に応えて:

次を使用して postgres が実行されているかどうかをテストします。

ps補助 | grep postgres

私を取得します:

633 0.0 0.0 2442564 392 ?? Ss 9:23am 0:00.09 postgres: 統計収集プロセス 632 0.0 0.0 2446480 1516 ?? Ss 9:23am 0:00.09 postgres: autovacuum launcher プロセス 631 0.0 0.0 2446348 520 ?? Ss 9:23am 0:00.32 postgres: wal ライター プロセス 630 0.0 0.0 2446348 580 ?? Ss 9:23am 0:00.48 postgres: ライター プロセス 520 0.0 0.1 2446348 3640 ?? S 9:22am 0:00.33 /usr/local/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log myusername 1187 0.0 0.0 2434892 540 s000 S+ 10:35am 0:00.00 grep postgres

Unix ドメイン ソケットが実行されているかどうかをテストします。

ls -l /tmp/ | grep PGSQL | grep -v grep

まったく何も得られません。

postgres はインターネット プロトコルのローカルホストをリッスンしていますか?

psql -H ローカルホスト

私を取得します:

psql: 致命的: データベース "localhost" が存在しません

postgres は Unix ドメインソケットをリッスンしていますか?

psql -H /tmp/.s.PGSQL.5432

私を取得します:

psql: 致命的: データベース "/tmp/.s.PGSQL.5432" が存在しません

4

3 に答える 3

2

「ポートファイル」は、PostgreSQLがリッスンしているUNIXソケットです。起動時に作成します。PostgreSQLサーバーを停止し、.lockファイルがまだ存在する場合は削除し、PGを再起動して、ソケットが戻ってくるかどうかを確認します。

私はそれが実際にそこにあることができない方法について困惑しています。私はそれが今までに起こったことを聞いたことがありません。

于 2012-06-22T09:28:26.790 に答える
1

ソケット ファイル .s.PGSQL.5432 の編集を妨げる .s.PGSQL.5432.lock が削除されるべきところに残されているようです。これは、postgres が起動しようとしたときに、ロック ファイルが保護するソケットが既に配置されていなかったにもかかわらず、ロック ファイルが新しいソケットの作成を妨げたため、起動できなかったことを意味していました。

.s.PGSQL.5432.lock を削除して postgres を再起動し、(Rails) サーバーを起動すると、通常は正常に機能しました。

于 2012-06-22T09:58:45.923 に答える