1. ホーム
  2. マコス

[解決済み] psql: サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (Mac OS X)

2022-03-31 05:30:47

質問

Macを再起動したところ、Postgresのエラーが発生しました。

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

なぜこのようなことが起こったかというと、私のmacbookが関係ない問題で完全にフリーズしてしまい、電源ボタンでハードリブートをしなければならなくなったからです。再起動後、このエラーのためにPostgresを起動することができませんでした。

解決方法は?

警告 が本当にないことを確認せずにpostmaster.pidを削除した場合。 postgres プロセスを実行すると、データベースを永久に破損させる可能性があります。 . (postmasterが終了した場合、PostgreSQLは自動的にこれを削除するはずです。).

解決策: これで問題が解決しました。このファイルを削除したら、すべてがうまくいきました!

/usr/local/var/postgres/postmaster.pid

--

そして、なぜこれが削除される必要があるのか、その理由を考えてみました。

  1. 次のコマンドを使用して、PG プロセスが実行されているかどうかを確認しました。私の場合、何もなく、PG サーバーを起動することさえできませんでした。

    ps auxw | grep post
    
    
  2. 上記のエラーメッセージにあった.s.PGSQL.5432というファイルを探しました。以下のコマンドを使いました。

    sudo find / -name .s.PGSQL.5432 -ls
    
    

    は、私のコンピュータ全体を検索しても何も表示されなかったので、ファイルは存在しないのですが、明らかに psql あるいは、そこにあると思ったのでしょうか。

  3. サーバーのログを見てみると、次のようなエラーが表示されていました。

    cat /usr/local/var/postgres/server.log
    
    

    というエラーが表示されます。

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
    
  4. エラーメッセージのアドバイスに従って、server.logと同じディレクトリにあるpostmaster.pidファイルを削除しました。これで問題が解決し、再起動することができました。

つまり、私のmacbookがフリーズしてハードリブートされたことで、Postgresがリブート後もプロセスが実行されていると勘違いしてしまったようなのです。このファイルを削除することで解決しました。これが他の方のお役に立てれば幸いです。多くの人が同じような問題を抱えていますが、ほとんどの回答はファイルのパーミッションに関係しているのに対し、私の場合は状況が異なっていました。