私のpostgresは以前は機能していましたが、何らかの理由で機能しなくなりました。私はスタックオーバーフローや他のサイトでいくつかの異なる検索を試してみましたが、同じ結果が得られ、同じページを何度も何度も読んだ後、成功せずに、新しい質問を投稿するときがきました。
ローカルホストでmy Railsプロジェクトを実行しようとすると、次のエラーメッセージが表示されます。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"?
ps -fu postgres
からの次の出力が示すように、サーバーはまったく実行されていません。
postgres 23969 23968 0 09:54 pts/25 00:00:00 -bash
取得しているエラーメッセージ:
psql
を実行すると次のようになります。psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
私が試した他のこと:
postgres -D /usr/local/pgsql/data >logfile 2>&1 &
を実行すると( official documentation に示されているように)出力:[1] 24670
しかし、サーバーはまだ実行されていません。
また、service postgres start
を介してサーバーを起動してみました。これにより、ユーザーとして認証するためのパスワードが要求されます(Authentication is required to start 'postgres.service'.
と表示されます)。ログインは成功しますが(==== AUTHENTICATION COMPLETE ===
)、その後Failed to start postgres.service: Unit postgres.service not found.
と表示されます
私はサーバーを再起動してみました(以下の Sudo /etc/init.d/postgresql restart
を使用してこれらの指示 を実行)。これは過去にpostgresを修正していましたが、今は単にRestarting postgresql (via systemctl): postgresql.service.
サーバーを再起動してみてください。変更はありません。
問題は、削除する必要があるpostmaster.pidファイルではないようです。このユーザーが行ったのと同じプロセス を実行した後 、Sudo find / -name .s.PGSQL.5432 -ls
を実行しても何も見つかりませんでした
Postgresを削除した後(以下の これらの手順 に従って)、 デジタルオーシャンチュートリアル を実行して「 psql
"と入力して、すぐにPostgresプロンプトにアクセスします。
その他の考えられる要因:(私は私の機知の終わりにいるので、頭に浮かぶ可能性のあるあらゆる要因をリストしています)
LOG: could not bind IPv4 socket: Cannot assign requested address HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. WARNING: could not create listen socket for "localhost" FATAL: could not create any TCP/IP sockets
この時点で、私は数時間を費やして無駄になりました...助けてください!!
/ etc/hostsファイルは、以前にそのファイルにいくつかの変更があったため、正しく構成されていませんでした。すぐに問題が発生することはありませんでしたが、何らかの理由でファイルをデフォルト(つまり、ローカルホストの場合は127.0.0.1、マシンの場合は127.0.1.1)に戻すことで問題が解決しました。
これは、netstat -tulpn | grep :5432
を実行して発見され、次のエラー出力が表示されました:Sudo: unable to resolve Host <my_machine>
。これは、/ etc/hostsファイルに問題があったことを示しています。
役立つリソースについては、 このリンク を参照してください。