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


247

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を起動できませんでした。


1
健全性チェックとして、マシンでPGが実行されていることを確認してください
Jbur43

1
答えを残すときは、なぜこれが起こっているのか、またはPostgresシステムがどのように機能するのかを説明してみてください。
Nick Res

6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226は私のために働いた
Derk Jan Speelman

brew再インストールpostgresqlこれは私の問題を解決しました
Ajay Kumar

回答:


420

警告:実際にpostgres実行中のプロセスがないことを確認せずにpostmaster.pidを削除すると、データベースが永久に破損する可能性があります。(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は、リブート後もプロセスがまだ実行中であると考えているようです。このファイルを削除すると解決しました。これが他の人に役立つことを願っています!多くの人が同様の問題を抱えていますが、ほとんどの回答はファイルのアクセス許可に関するものでしたが、私の場合は異なりました。


9
うまくいけば、この答えは誰か他の人を助けることになるでしょう、そしてそれを支持した人に感謝します。この質問を重複としてマークしたモデレーターにもかかわらず、それはユニークで便利です。素晴らしいサイトとここのエキスパートが共有してくれてスタックオーバーフローに感謝します!
FireDragon 2012年

2
FWIWだけで、postmaster.pidを削除するのは危険です。実行する前に、実行中のプロセスがないことを本当に確認する必要がありpostgresます。
Craig Ringer 2013年

20
すばらしい答えです。潜在的に破壊的なコマンドだけでなく、プロセス全体を投稿していただきありがとうございます。
dojosto 14

3
同意した。postmaster.pidに関する答えは良いですが、postgresが実行されているかどうか、または実行されている場所を特定するプロセスの各ステップは、非常に貴重です。ありがとうございました!
クリントン

11
macosでの私のpostgresログはにありました/usr/local/var/log/postgres.log
Ryan Tuck

172

上記のどれもうまくいきませんでした。次の方法でPostgresを再インストールする必要がありました。

  • brewでpostgresqlをアンインストールします。 brew uninstall postgresql
  • brew doctor (ここにあるものをすべて修正)
  • brew cleanup
  • すべてのPostgresフォルダを削除します。

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • brewを使用してpostgresqlを再インストールします。 brew install postgresql

  • サーバーを起動します。 brew services start postgresql
  • データベースを作成する必要があります...(createdb

4
うまくいきましたが、実際のデータベースを削除する必要はなく、アプリケーションサポートにフォルダーもありませんでした。ポイントは、postgresのインストール中に、いくつかのbrew要素がシンボリックリンクを壊したということでした。それらを修正し、postgresをインストールすると、問題が解決しました。ありがとう!
クルビ

2
私も走るまで、これもトップアンサーもbrew postgresql-upgrade-database
うまくいき

古いデータを削除する必要がないことを除いて、これらは私にとってはうまくいきました。
アマルアントニー

確認するには:これですべてのデータベースが削除されますか?brew reinstall postgres最新のHomebrew Postgresメジャーバージョン番号が現在の(壊れた)バージョン番号と同じであることを確認して、だけで問題を解決できました。
Jacob Ford

85

macOSを使用していて、homebrew経由でpostgresをインストールしている場合は、次のコマンドで再起動してみてください。

brew services restart postgresql

Ubuntuを使用している場合は、次のいずれかのコマンドで再起動できます

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

34

おそらくこれは無関係ですが、postgresを使用してメジャーバージョンにアップグレードすると、同様のエラーが表示されますbrew。を使っbrew info postgresqlてこれがわかった:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

4
これは、カタリナで11から12に行くときに私にとってうまくいきました
nzajt '25年

1
私のためにも働いた
emptywalls

15

これが私のやり方です:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
これは、homebrewを使用したPostgresの停止、開始、再起動、再インストールが他に行われなかったときに機能しました。ありがとう@ smartworld-dm
Bradley

1
これは私がいつも戻ってくる魂です。実行時にfix-my-postgresqlこれを実行するエイリアスを追加する場合があります:)
Tomas K

1
PCを再起動するたびにこれを行う必要がある理由は何ですか?
ステファノ

11

あなたpostmaster.pidがなくなって、あなたが再起動できない、または何もできない場合、これを行ってください:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

ここで最初に説明したよう


8

こんにちは世界:)
私にとって最良で奇妙な方法は、次のことをすることでした。

1)postgres93.appまたは他のバージョンをダウンロードします。このアプリケーションを/ Applications /フォルダーに追加します。

2)ファイル.bash_profile(私のホームディレクトリにあります)に行(コマンド)を追加します。

export PATH = / Applications / Postgres93.app / Contents / MacOS / bin /:$ PATH
これはpsqlからのパスPostgres93.appです。行(コマンド)は、コンソールが開始されるたびに実行されます。

3)フォルダーPostgres93.appから起動し/Applications/ます。ローカルサーバーを起動します(ポートは "5432"、ホストは "localhost")。

4)このすべての操作の後、私は実行$ createuser -SRDP user_nameおよびその他のコマンドを実行して、それが機能することを確認できて嬉しかったです!Postgres93.appシステムが起動するたびに実行することができます。

5)データベースをグラフィカルに表示したい場合も、をインストールする必要がありますPG Commander.app。postgres DBをきれいなデータテーブルとして見るのに良い方法です

もちろん、これはローカルサーバーにのみ役立ちます。この指示がこの問題に直面した他の人を助けるなら私はうれしいです。


1
ここで重要なのは、Postgresをパスに追加することです(ステップ2)。それは私を助けました。Homebrewを使用してPostgresをインストールした場合は、.bash_profileに次の行を追加して、パスに追加できます。– export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATHバージョン番号が異なる場合があることに注意してください。
Tina

7

この問題には多くの出典があり、したがって多くの回答があります。私はそれらのそれぞれを経験しました。

1)何らかのクラッシュが発生した場合、postgresが適切に処理しなかった可能性があるため、/ usr / local / var / postgres / postmaster.pidファイルを削除する必要があります。ただし、プロセスが実行されていないことを確認してください。

2)Craig Ringerは、他の投稿で、AppleのpostgreSQLのバンドルがpg gemのインストールの問題につながることを指摘しています。PATH 環境変数の設定が解決策です。

3)別の解決策は、gemをアンインストールして再インストールすることです。抽出の更新も必要になる場合があります。

この投稿に遭遇した場合、ソースの1つを特定できれば、時間を節約できます...


3
投稿してよかったです。別のクラッシュとその答えはかなり迅速に取得できます...
Jerome

6

私にとって、解決策は単にコンピューターを再起動することでした。私は最初にBrewサービスで再起動を試みましたが、それがうまくいかなかった場合は、より複雑なソリューションを調べる前に、再起動が次善策のように思えました。すべてが後のように機能しました。


5

私はここで同様の問題に直面していましたが、以下のようにこの問題を解決しました。

実際、postgresプロセスは停止しています。postgresのステータスを確認するには、次のコマンドを実行します

sudo /etc/init.d/postgres status

プロセスが死んだと表示されます `プロセスを開始するだけです

sudo /etc/init.d/postgres start


4

これは、Mac(High Sierra)がフリーズした後で起こり、手動で再起動する必要がありました(電源ボタンを押し続けます)。それを修正するために私がしなければならなかったすべては、完全な再起動を行うことでした。


3

私の問題は、ガスマスク(Macのホストファイルマネージャー)を使用していて、使用しているホストファイルにlocalhostのエントリがなかったということです。

追加した:

127.0.0.1 localhost

そして、それは私の問題を解決しました。


3

理由は完全にはわかりませんが、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、そして、ビオラ、ファイルは再び現れました。

それから私は先に進み、実際にサーバーを見つけた私のアプリを実行しましたが、私のデータベースはなくなっているようです。

私はそれらがまったくなくなっていない可能性があることを知っていますが、私が行った新しい初期化は新しいdata_areaを作成した可能性があり、古いものはポイントされていません。私はそれがどこにあるのかを見て、それを元に戻すか、データベースをもう一度作成する必要があります。

お役に立てれば!postgresのドキュメントを読むことは、私を大いに助けました。「これを貼り付けて機能します」のような答えを読むのは嫌いです。何が起こっているのか、そしてなぜなのか私にはわからないからです。


2

このエラーの原因は多数あるため、まずログファイルを見つけて、手がかりがないかどうかを確認します。それは、/usr/local/var/log/postgres.logまたは/usr/local/var/postgres/server.log他の場所にある可能性があります。Homebrewでインストールした場合、場所はで確認できます~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist


2

同じ問題がありました。ほとんどの場合、問題は残りのファイルがあるという事実です

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

ほとんどの人で動作しますが、私のケースは異なりました-この問題を過去3時間グーグルで試し、OSXのbrewを介してpostresqlをアンインストールし、データベースをパージしましたが、何も動作しませんでした。

最後に、私はbrewに問題があることに気づきました。何かをインストールしようとするといつでもポップしました:

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

またはインストールの最後にそれのようなもの。

私は単純にそれをやったsudo chmod -R 777 /private/tmp、そしてそれはついにうまくいった!

これは誰かのための解決策かもしれないので、私はこれを書き留めています


1

ここに移動し/var/log/ てcatを実行するとpostgres.log、postgresが失敗する理由がわかります。スマートシャットダウンの場合、おそらくあなたのicu4cバージョン(Unicode用のC ++ライブラリ)は適切ではなく、これはにリンクされていpostgresます。したがって、次のコマンドを実行します。

brew upgrade brew cleanup これはうまくいくはずです;)


Homebrewを壊すと、brew style後で実行しなければならない場合がありbrew cleanupます。
olliezhu

0

この問題を解決するには、この投稿を何回か調べなければなりませんでした。別の修正があり、実行中の他のプログラムの同様の問題にも適用されます。

次の2つのコマンドを使用できることを発見しました。

$ top

これにより、現在実行中のすべてのアクションがpid番号とともに表示されます。postgresおよび関連するpidを見つけたとき

$ kill pid_number


0

マシン(ubuntu)をアップデートに入れて、以下のエラーが発生したのと同じ問題が発生しました:

サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行されており、UNIXドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?

システムエラーを再起動すると、更新プロセスが完了しました。そして、以前のようにその魅力のような仕事..これは、pgが更新され、別のプロセスが開始されたときに起こったと思います。


0

SUPER NEWBIE ALERT:私はWeb開発と、私がフォローしている特定のチュートリアルを学んでいるだけで、Postgresをインストールする必要があると述べましたが、実際に実行する必要もありませんでした... Postgresアプリケーションを開くと、すべてが問題なく、ダンディ。


0

@Jagdish Barabariの回答から、これを解決するために必要な手がかりが得られました。1つだけが実行されている間に、2つのバージョンのpostgresqlがインストールされていることがわかりました。すべてのpostgresqlファイルを削除して最新バージョンを再インストールすると、この問題は解決しました。


0

LD_LIBRARY_PATHから/ usr / libを削除したところ、問題なく動作しました。私はdockerfile postgres:alpineで働いていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.