最近、Homebrewを使用してMac(El Capitan 10.11.4、Postgresはバージョン9.5.1)にPostGISをインストールしました。次の手順に従います- http://morphocode.com/how-to-install- postgis-on-mac-os-x /
を使用してPostgresを起動しようとすると
pg_ctl -D /usr/local/var/postgres start
次のエラーが表示されます。
$ FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 280) running in data directory "/usr/local/var/postgres"?
それで、私はこれに対処する方法を研究するのに数時間を費やしましたが、役に立ちません。
特に、スーパーユーザーの回答で推奨されているようにPIDを殺そうとしました- https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists- (上記の場合、kill 208
)を実行しましたが、Postgresを再び起動しようとするとすぐに、
PID番号が異なっていても、同じエラーが発生しました。 postmaster.pidファイルを削除するように勧められた人が数人いましたが、最後の手段として保存する必要があるかもしれません...
確かに、これを修正する方法がわからない理由の一部は、私はポストマスターが何であるかさえ本当にはっきりしていないということです-私はこのすべてについて学び始めています。
psql db_name
コマンドを介してPostgresデータベースにアクセスすることは、それが価値があることのために、うまく機能します。
Postmaster は主なPostgreSQLプロセスです。すでに実行されているPostgreSQLを起動しようとしています(接続できると言っている)。プロセスのそのステップをスキップしてください。
TL; DR:データベースに接続できるので、サーバーを再度起動する必要はありません-既に実行されています。
pg_ctl
は、PostgreSQLサーバーを制御するために使用されます。サーバーはすでに開始されているため、コマンドは次のようになります。
pg_ctl -D /usr/local/var/postgres start
postmaster.pid
にロックがあることを示すエラーを返します。これは、そのPIDで実行されているサーバーが既に存在するため、trueです。
2つの方法があります。
サーバーの実行を停止できます:
pg_ctl -D /usr/local/var/postgres stop
これにより、ポストマスターをロックできなくなり、コマンドを使用して再度起動できるようになります。
他の人を助けるためにこれを投稿する:
ラップトップがクラッシュしたときにハードリブートした後、OPと同じ問題が発生していました。次のコマンドを実行して、postmaster.pidに関連付けられているPIDを確認できました。
cat /usr/local/var/postgres/postmaster.pid
表示される最初の番号はPIDです。 Activity Monitorを見ると、Postgresが実行されていることがわかりましたが、示されているものと一致するPID番号はありませんでした。
スーパーユーザーの回答に記載されている手順の代わりに、ラップトップを適切に再起動し、ターミナルを開いて実行しました
brew services restart postgresql
これはpostmaster.pidを削除することなく機能しました。他のいくつかの投稿で推奨されているものを見ました。時にはそれが機能するシンプルなソリューションです。
OSxで、システムが予期せずシャットダウンすることがよくあります。
ファイルを削除するだけで_postmaster.pid
。
cd Library/Application Support/Postgres/var-{postgres-version}
そして、postmaster.pidファイルを削除します
このコマンドを使用してPostgresを再起動します
pg_ctl -D /usr/local/var/postgres restart