web-dev-qa-db-ja.com

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

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

194
FireDragon

警告:実際に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はプロセスがリブート後もまだ実行されていると考えていたようです。このファイルを削除すると解決しました。これが他の人に役立つことを願っています!多くの人が似たような問題を抱えていますが、ほとんどの答えはファイルのパーミッションに関係していましたが、私の場合は状況が異なりました。

354
FireDragon

上記のどれも私のために働きませんでした。私は以下の方法で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
  • Postgresqlをbrewで再インストールします。brew install postgresql

  • サーバーを起動します。brew services start postgresql
  • データベースを作成しなければなりません...(createdb
110
ypicard

あなたがmacOSを使っていて、homebrew経由でpostgresをインストールしたのなら、で再起動してみてください。

brew services restart postgresql

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

Sudo service postgresql restart

Sudo /etc/init.d/postgresql restart
70

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

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

あなたのpostmaster.pidがなくなって再起動できない、あるいは何もできない場合は、次のようにします。

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

説明されているように ここで 最初に

10
Antoine

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

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

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

3)別の解決策は、宝石をアンインストールして再インストールすることです。ブリューアップデートも必要かもしれません。

もしあなたがこの記事に出くわしたならば、もしあなたがソースの1つを正確に指摘できれば、あなたは時間を節約するでしょう...

7
Jerome

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

6
Matt Lemieux

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

実際にはpostgresプロセスは停止していて、postgresのステータスを見るために次のコマンドを実行してください。

Sudo /etc/init.d/postgres status

それはプロセスが死んでいると言うでしょう `プロセスを開始する

Sudo /etc/init.d/postgres start
5

これは私のMac(High Sierra)がフリーズした後に起こり、手動で再起動しなければなりませんでした(電源ボタンを押したままにします)。それを修正するためにしなければならなかったのは、クリーンな再起動だけでした。

4
skwidbreth

私の問題は、私がGas Mask(Mac用のhostsファイルマネージャ)を使用していて、使用していたhostsファイルにlocalhostのエントリがないことでした。

追加した:

127.0.0.1 localhost

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

3
jawns317

このエラーの原因は多数あるため、最初にログファイルを見つけて、その手がかりを探します。 /usr/local/var/log/postgres.log/usr/local/var/postgres/server.log、あるいは他の場所にあるかもしれません。 Homebrewを使ってインストールした場合、その場所は~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistにあります。

2
Tamlyn

その理由は完全にはわかりませんが、私の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のドキュメントを読むことは私に大いに役立ちました。 「貼り付けてうまくいく」というような答えを読むのが嫌いです。何が起きているのか、なぜなのかわからないから。

1
Nick Res

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

/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をした、そしてそれはついにうまくいく!

これは他の人にとっての解決策かもしれないのでこれを書き留めています

1
Maciej Pk

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

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

0
shishir bondre

アップデート用に自分のマシン(ubuntu)を入れたときと同じ問題が発生し、エラー以下になりました。

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

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

0
Gagan Gami

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

私はあなたが以下の2つのコマンドを使用できることを発見しました。

$ top

これは、現在実行中のすべてのアクションをそれらのPID番号とともに表示します。 postgresとそれに関連するpidが見つかったとき

$ kill pid_number

0
cohart

いくつかの検索の後、私には同じような問題と簡単な答えを見つけました。

brew postgresql-upgrade-database

ssamateh これに対する回答 関連トピック

0
OBrooks

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

0
5280Angel

SUPER NEWBIE ALERT:私はWeb開発と私がフォローしていた特定のチュートリアルを学んでいるだけで、Postgresをインストールしなければならないと述べましたが、実際に私がしなければならないとは言いませんでしたrunそれだけではありません... Postgresアプリケーションを開いた後は、すべて問題ありませんでした。

0
Lorenzo

LD_LIBRARY_PATHから/ usr/libを削除しましたが、正常に機能しました。私はdockerfile postgres:Alpineで働いていました。

0
ddtraveller