私の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を起動できませんでした。
警告:実際にpostgres
プロセスが実行されていないことを確認せずにpostmaster.pidを削除すると、データベースが永久に破損する可能性があります。 (Postmasterが終了した場合、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はプロセスがリブート後もまだ実行されていると考えていたようです。このファイルを削除すると解決しました。これが他の人に役立つことを願っています!多くの人が似たような問題を抱えていますが、ほとんどの答えはファイルのパーミッションに関係していましたが、私の場合は状況が異なりました。
上記のどれも私のために働きませんでした。私は以下の方法でPostgresを再インストールしなければなりませんでした:
brew uninstall postgresql
brew doctor
(ここにあるものは何でも修正します)brew cleanup
すべてのPostgresフォルダを削除します。
rm -r /usr/local/var/postgres
rm -r /Users/<username>/Library/Application\ Support/Postgres
Postgresqlをbrewで再インストールします。brew install postgresql
brew services start postgresql
createdb
)あなたがmacOSを使っていて、homebrew経由でpostgresをインストールしたのなら、で再起動してみてください。
brew services restart postgresql
Ubuntuを使用している場合は、次のいずれかのコマンドで再起動できます。
Sudo service postgresql restart
Sudo /etc/init.d/postgresql restart
これは無関係かもしれませんが、postgres
を使用してbrew
をメジャーバージョンにアップグレードすると、同様のエラーが表示されます。 brew info postgresql
を使用することは、これを助けたことがわかった:
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
あなたのpostmaster.pid
がなくなって再起動できない、あるいは何もできない場合は、次のようにします。
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
説明されているように ここで 最初に
この問題には多くの原因があり、したがって多くの答えがあります。私はそれらのそれぞれを経験しました。
1)何らかのクラッシュが発生した場合、/ usr/local/var/postgres/postmaster.pidファイルを削除する必要があります。postgresがそれを正しく処理していない可能性があるためです。しかし、どのプロセスも実行されていないことを確認してください。
2)Craig Ringerは他の記事で、AppleによるpostgreSQLのバンドルが pg gemのインストールの問題を引き起こすことを指摘しています。 PATH環境変数の設定は解決策です。
3)別の解決策は、宝石をアンインストールして再インストールすることです。ブリューアップデートも必要かもしれません。
もしあなたがこの記事に出くわしたならば、もしあなたがソースの1つを正確に指摘できれば、あなたは時間を節約するでしょう...
私にとっては、解決策は単にコンピュータを再起動することでした。私は最初にBrewサービスで再起動しようとしましたがそれがうまくいかなかったとき、再起動することはもっと複雑な解決策のいくつかを調べる前に試すべき次善の策のように思えました。それが後にするべきであるようにすべてがうまくいった。
私はここで同様の問題に直面していました私は以下のようにこの問題を解決しました。
実際にはpostgresプロセスは停止していて、postgresのステータスを見るために次のコマンドを実行してください。
Sudo /etc/init.d/postgres status
それはプロセスが死んでいると言うでしょう `プロセスを開始する
Sudo /etc/init.d/postgres start
これは私のMac(High Sierra)がフリーズした後に起こり、手動で再起動しなければなりませんでした(電源ボタンを押したままにします)。それを修正するためにしなければならなかったのは、クリーンな再起動だけでした。
私の問題は、私がGas Mask(Mac用のhostsファイルマネージャ)を使用していて、使用していたhostsファイルにlocalhostのエントリがないことでした。
追加した:
127.0.0.1 localhost
そしてそれは私の問題を解決しました。
このエラーの原因は多数あるため、最初にログファイルを見つけて、その手がかりを探します。 /usr/local/var/log/postgres.log
や/usr/local/var/postgres/server.log
、あるいは他の場所にあるかもしれません。 Homebrewを使ってインストールした場合、その場所は~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
にあります。
その理由は完全にはわかりませんが、私のPostgresのインストールが少し失敗し、いくつかのファイルが削除されてOPが表示したエラーが発生しました。
brew service retart postgres
のようなコマンドを実行して正しいメッセージを見ることができるという事実にもかかわらず、このエラーは解決しませんでした。
私はpostgresのドキュメントを調べたところ、私のファイル/usr/local/var/postgres
は完全に空だったことがわかりました。それで、私は以下を走らせました:
initdb /usr/local/var/postgres
そのコマンドで設定が行われたようです。
それから私はこれを実行するように頼んだ:
postgres -D /usr/local/var/postgres
そしてそれは私にpostmaster.pidファイルが既に存在することを私に言った。
Brewが今実行した設定を取得できるかどうかを知る必要があるので、試してみました。
ls /usr/local/var/postgres
それは私にpostmaster.pidファイルを見せてくれました。それから私はbrew services stop postgresql
をした、そしてpostmaster.pidファイルは消えた。それから私はbrew services start postgresql
をしました、そしてVIOLA、ファイルは再び現れました。
それから私は先に行き、実際にサーバーを見つけた私のアプリを実行しました、しかし私のデータベースは消えたようです。
まったく初期化されていない可能性があることはわかっていますが、新しい初期化によって新しいdata_areaが作成された可能性があり、古いものは指定されていません。私はそれがどこにあるのかを見てそれを見直すか、単にデータベースを作り直す必要があります。
お役に立てれば! postgresのドキュメントを読むことは私に大いに役立ちました。 「貼り付けてうまくいく」というような答えを読むのが嫌いです。何が起きているのか、なぜなのかわからないから。
私は同じ問題を抱えていました。ほとんどの場合、問題は残りのファイルがあるという事実です。
/usr/local/var/postgres/postmaster.pid
これはほとんどの人のために働く、しかし私のケースは異なっていた - 私は過去3時間この問題をグーグルしようとした、brewを通してOSX上のpostresqlをアンインストールし、データベースをパージし、何も働かなかった。
最後に、私は私が何かをインストールしようとするたびに、それがポップしたという醸造に問題があることに気づきました:
Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....
またはインストールの終わりにそれのような何か。
私は単にSudo chmod -R 777 /private/tmp
をした、そしてそれはついにうまくいく!
これは他の人にとっての解決策かもしれないのでこれを書き留めています
/var/log/
に行き、cat postgres.log
を実行してください。ここで、postgresの失敗の理由がわかります。それが賢いシャットダウンであるならば、おそらくあなたのicu4c
バージョン(Unicode用のC++ライブラリ)はpostgres
とリンクされている適切ではありません。それで、以下のコマンドを実行してください。
brew upgrade
brew cleanup
これはうまくいくはずです;)
アップデート用に自分のマシン(ubuntu
)を入れたときと同じ問題が発生し、エラー以下になりました。
サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行されており、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?
私は私のシステムエラーが再起動したときに更新処理を完了した後。そしてその仕事は以前と同じような魅力のようなものです。pgが更新されて別のプロセスが始まったのでこれが起こったと思います。
私はこの問題を解決するためにこの投稿を数回調べなければなりませんでした。他の実行中のプログラムと同様の問題にも適用される別の修正があります。
私はあなたが以下の2つのコマンドを使用できることを発見しました。
$ top
これは、現在実行中のすべてのアクションをそれらのPID番号とともに表示します。 postgresとそれに関連するpidが見つかったとき
$ kill pid_number
@Jagdish Barabariの回答から、これを解決するために必要な手がかりがわかりました。 1つだけが実行されている間にインストールされたpostgresqlの2つのバージョンがあることがわかりました。すべてのpostgresqlファイルを削除して最新バージョンを再インストールすることで、この問題は解決しました。
SUPER NEWBIE ALERT:私はWeb開発と私がフォローしていた特定のチュートリアルを学んでいるだけで、Postgresをインストールしなければならないと述べましたが、実際に私がしなければならないとは言いませんでしたrunそれだけではありません... Postgresアプリケーションを開いた後は、すべて問題ありませんでした。
LD_LIBRARY_PATHから/ usr/libを削除しましたが、正常に機能しました。私はdockerfile postgres:Alpineで働いていました。