警告: postgres
が実際に存在しないことを確認せずにpostmaster.pidを削除した場合 あなたを実行しているプロセスは、データベースを永久に破壊する可能性があります 。 (ポストマスターが終了した場合、PostgreSQLは自動的に削除する必要があります。)
解決策:これで問題が修正されました。このファイルを削除すると、すべてが機能しました。
/usr/local/var/postgres/postmaster.pid
-
これが、なぜこれを削除する必要があるのかを私が理解した方法です。
-
次のコマンドを使用して、実行中のPGプロセスがあるかどうかを確認しました。私にとっては何もありませんでした。PGサーバーを起動することすらできませんでした:
ps auxw | grep post
-
上記のエラーメッセージに含まれていたファイル.s.PGSQL.5432を検索しました。次のコマンドを使用しました:
sudo find / -name .s.PGSQL.5432 -ls
コンピューター全体を検索しても何も表示されなかったため、ファイルは存在しませんでしたが、明らかに
psql
「望んでいた」または「そこにあったと思った」 -
サーバーログを確認したところ、次のエラーが発生しました:
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".
-
エラーメッセージのアドバイスに従って、server.logと同じディレクトリにあるpostmaster.pidファイルを削除しました。これで問題が解決し、再起動できました。
そのため、私のMacBookがフリーズしてハードリブートされたため、Postgresはリブート後もプロセスがまだ実行中であると考えていたようです。このファイルの削除は解決されました。これが他の人に役立つことを願っています!多くの人が同様の問題を抱えていますが、ほとんどの答えはファイルのアクセス許可に関係していましたが、私の場合は状況が異なりました。