PostgreSQLエラー「サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません」


136

他の人と同様に、プロジェクトでrake db:migrateを実行したり、Ruby on Rails 3.2アプリケーションのほとんどのデータベースタスクを試したりすると、このエラーが発生します。

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

私はPostgreSQLHomebrewとともにかなり前にインストールしましたが、MongoDBのインストールを試みたところ、最近ではPostgreSQLのインストールが同じではありませんでした。OS X v10.6 Snow Leopardを実行しています。

何が問題で、PostgreSQLがどのように理解されており、Macで設定する必要がありますか?

これまでのところ(私は思う)、これはPostgreSQLが実行されていない(?)ことを示しています。

ps -aef|grep postgres                                                                                                   (ruby-1.9.2-p320@jct-ana) (develop) 
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

しかし、これはPostgreSQLが実行中であることを示していますか?

 launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

どうすれば修正できますか?私は何を見ていませんか?

PS:~/Library/LaunchAgents2つのPostgreSQL .plistファイルが含まれています。それが関連しているかどうかはわかりません。

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

以下を試してみたところ、以下のような結果になりました。

$ psql -p 5432 -hローカルホスト

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

OS Xが独自のバージョンのPostgreSQLをインストールし、Homebrewが異なる場所に異なるバージョンをインストールし、PostgreSQLコマンドが/ tmp /ディレクトリーを探しているため、これが発生していることを読んだことがあります。Stack Overflowでさらに検索する必要がありますが、基本的にはPostgreSQLにシンボリックリンクを作成することで、そのtmpパスを調べたときに実際に実際のパスが見つかるようにします。

これは、試してみるいくつかのこと、特に上記のシンボリックリンクを見つけたリンクです。MacOSX Lion Postgresは/tmp/.s.PGSQL.5432での接続を受け入れません。OS XにPostgreSQLをインストールすることの背後にある概念について、きちんとした説明をまとめて、それがなぜそれほど難しいのかを誰かにまとめてもらいたいと思っています。

トラブルシューティングに役立つ最新の洞察:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

次に実行します:

$ echo $PATH

考慮すべき重要な点はこれです:

OS XシステムのPostgreSQLへのパスの前に実行するPostgreSQLのコピーのパスエントリを確認してください。

これは、実行するPostgreSQLを決定する中心的な要件であり、これらの問題のほとんどを引き起こすと私が言われていることです。


これに対する解決策を見つけたことがありますか?マークしていません。これらのどれも私を助けません。
Andras Gyomrey 2013

それがまだ機能するのは、まだ大部分が奇妙で奇妙な化身です。上記の[編集2]にリンクを追加し、いくつかの提案と、編集コメントに従ってシンボリックリンクを実行する方法を追加しました。Symlinkは最終的には私のために機能しましたが、私は途中でpostgresとhomebrewもアンインストールして再インストールしたので、何が違いをもたらしたかを正確に知ることは困難です。幸運を。新しい質問を見つけたら報告してください。この質問について15,000回の意見があり、多くの人に苦痛を与えています。
Evolve 2013

@AndrasGyomrey私はオーストラリアのRailsCamp15から戻ってきたばかりで、パスファイルを正しくすることが重要だと人々から言われました。これを説明するために上記の編集3で編集しました。
Evolve 2014年

起動時に何かを報告するlaunchctlが必ずしも稼働していることを意味するわけではないことに注意してください。代わりにbigsql.comを見てください。Macで動作し、優れた管理UIを備えています。
ジムナスビー

回答:


102

postgresディレクトリにpostmaster.pidがないことを確認してください、おそらく /usr/local/var/postgres/

これを削除してサーバーを起動します。

チェック-https ://github.com/mperham/lunchyは、launchctlの優れたラッパーです。


3
これでうまくいきました。私はヨセミテを新しくインストールし、自作からpostgresをロードしました。初めて使用したときは問題なく動作しましたが、再起動後にこの問題が発生しました。それで、これがうまくいった理由を説明できますか?
ダンウィリアムズ

2
私のために働いたが、newbsのため、缶誰かがなぜ、どのように安全これは説明
アレクサンダー・ミルズ

58

OS Xを使用している場合は、「Postgres.app」の方が適切な修正です。


ここに修正があります:

  1. データベースを停止します
  2. cd /var
  3. rm -r pgsql_socket
  4. ln -s /tmp pgsql_socket
  5. chown _postgres:_postgres pgsql_socket
  6. PostgreSQLを再起動します(コンピューターではありません)

詳細については、「Lion Dev Preview 1のpostgresql 9.0.3。」を参照してください。


2
エラーが戻ってきましたが、この修正は役に立ちませんでした。私は暗い部屋で実際に何が起こっているのかを理解するための作業と自分で修正を適用するプロセスでぶつかるような気がします。この問題を診断して修正する方法を説明していただけますか?
2013

私のために働く。/tmp_postgresに寄り添うのは少し変ですが、ちょっと:)
wrdevos

postgresappは機能しますが、ターミナルでサーバーを起動できないのはなぜですか?このアプリを終了した後、問題は期待どおりに戻ります。
白波2013年

これは私にとってはうまくいきましたが、#2-4を実行するにはrootであるかsudoを使用する必要があることに注意してください。また、ステップ#5を明確にしてください-コンピューターではなく、postgresのみを再起動する必要があります。
mpelzsherman 2014年

2
大文字はより良い答えをしません。PostgresをHomebrew(サービス)経由でインストールして実行することはまだ完全に問題あり
ません

55

私にとって、これは機能します

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

9
私の場合、pidを削除した後、postgresqlを再起動する必要がありましたpg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Obromios

4
:私はまた、自作でインストールしたとき、あなたはこのようにそれを行うことができ、postgresのを再起動する必要がありましたbrew services restart postgresql
santuxus

2
No such file or directory私の場合、私は
docker

2
rm:/usr/local/var/postgres/postmaster.pid:No
such

13

これはあなたが言ったエラーのために私のために働きました。次のいずれかを実行します。

  1. インストール中にpostgres.confデフォルトのポート以外のものを使用した場合は、ファイルで 指定されているデフォルトのポートを変更する可能性があります5432

  2. でポート番号を変更しpostgresql.conf、DBサーバーを再起動します。

  3. psqlコマンド全体を入力する代わりに:

    psql -p 5432 -h localhost   
    • サーバー名とポート番号

1.私のインストールはデフォルトどおりだったと思います。
Evolve 2012

2.これを変更できますか、ポートの変更による影響はありますか?
Evolve 2012

3.上記の3からの出力を追加しました。
Evolve 2012

オプション3はカスタムポートで機能しました。複数のpgサーバー(PostgreSQL 9.1、9.2、9.3)をインストールしているので、正しいpsqlも指定する必要がありました。
gpasse 2013

11

Homebrewを実行している場合は、Postgresql end pg gems:*をアンインストールします。

$ gem uninstall pg
$ brew uninstall postgresql

次のスクリプトをダウンロードして実行し、/ usr / localの権限を修正します。* https://gist.github.com/rpavlik/768518

$ ruby fix_homebrew.rb

次に、Postgresとpg gemを再インストールします。*

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

launchdでログイン時にpostgresqlを起動するには、以下を実行します。

$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 

または手動で開始します。

pg gemをインストールする

$ gem install pg

お役に立てば幸いです


差出人brew info postgresARCHFLAGS="-arch x86_64" gem install pg
wrdevos

1
これはデータベース内のレコードを削除しませんか?
kibaekr 2014

initdb /usr/local/var/postgres -E utf8動作します。本当にありがとう。
Chris Jeon

8

Postgresを9.3.xにアップグレードすると、その問題が発生しました。私にとっての迅速な修正は、以前に持っていた9.2.xバージョンにダウングレードすることでした(新しいバージョンをインストールする必要はありません)。

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

Homebrew install specific version of formula?」では、問題を修正する別の方法とともに、より包括的な説明が提供されます。


貢献に感謝し、修正を繰り返すための明確な指示。あなたが含めたそのリンクは包括的です、私は現在postgresで問題を抱えていないので、これがまだ他の人にどれだけ役立つかはわかりませんが、これが役に立つと思った人はここにコメントしてください。
2014年

直接ではないかもしれませんが、私はそれが有用で関連性があると思います。彼は、かなり一般的なツールであるbrewを使用してバージョンを切り替えるだけで問題を解決し、これまでの手順を繰り返しただけですが、これまでのところ、リンクはbrewに固有のより多くの問題に遭遇します。 OPの質問との関連で。
wkhatch 14

7

postgresをアップグレードして修正しました。

brew update
brew upgrade

次に、データベースを新しいメジャーバージョンと互換性があるようにアップグレードする必要がありました。これは、10から11にアップグレードしたためです。

brew postgresql-upgrade-database

(ソースhttps://github.com/facebook/react-native/issues/18760#issuecomment-410533581


このエラーが発生しましたエラー:postgresql 9.3。*バージョンがインストールされていません!
nourza

5

したがって、ここでの多くの問題については、人々はすでにpsqlを実行していて、削除する必要があったようです postmaster.pidです。ただし、postgresをシステムに適切にインストールしたことがなかったので、この問題はありませんでした。

MAC OSXヨセミテで私のために働いた解決策があります

  1. http://postgresapp.com/に行きましたアプリをダウンロードしました。
  2. アプリをApplication /ディレクトリに移動しました
  3. これを.bashrcまたは.bash_profileまたは.zshrcに追加して、$ PATHに追加しました。 export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  4. 私はアプリケーションディレクトリからpostgresを実行し、コマンドを再度実行しましたが、うまくいきました。

お役に立てれば!Toodles!

また、この回答は私に最も役立ちました:https : //stackoverflow.com/a/21503349/3173748


これは、BrewのインストールではなくPostgresアプリを指していますか?それはいくつかの有用なパッケージからあなたを切り離すことができます(例えば、私は無限の悲しみを引き起こし、今ここにいるPostgresアプリに
インストールできないpgrouting

4

実行すると:psql -p 5432 -h localhostはループバックドライバーを使用しませんが、実際のソケットを使用するため、ソケット接続を受け入れるようにpostgresを構成する必要があります。したがって、pgadminや他のクライアントが機能しても、psqlは機能しません。

実際のソケットで接続できるように、postgresql.confファイルとpg_hba.confファイルの両方を変更する必要があります。これにより、リモートIPからの接続も可能になるため、デフォルトでは無効になっています。

これらのファイルはデータディレクトリにありますが、実際の場所はpostgresのインストール方法によって異なる場合があります。postgresが実行されている状態で、次のコマンドを実行します。

ps -ef | grep postmaster

これらの2つのファイルは-Dディレクトリです(おそらく/ usr / local / pgsql / data)。

postgresql.confファイルの場合、listen_addressのコメントを外して、次のように変更します。

listen_address = '*'

pg_hba.confに次の行を追加します。

host all all 0.0.0.0/0 md5

2

MacやHomebrewについてはあまり知りませんが、PostgreSQLについてはよく知っています。

PostgreSQLが開始しようとしているログの場所と、PostgreSQLのソケットディレクトリを特定する必要があります。デフォルトでは、PGをビルドするときのソケットディレクトリは/ tmp /です。PGをビルドしたときにそれを変更せずにPGを開始した場合、次のようにすると、/ tmpにソケットファイルが表示されます。ls -al / tmp

ソケットファイルは「。」で始まるため、lsの「-a」を使用しても表示されません。

そこにソケットが表示されず、ps awuxから何も表示されない場合| grep postgresの場合、PGはおそらく実行されていないか、おそらく実行されていて、OSXがインストールされているものです。発生している可能性があるのは、localhostのポート5432でリッスンするときに競合が発生している可能性があります。netstat-anpを使用して、5432でリッスンしているものがあれば、それを確認します。MacOSX PGがそのポートですでにリッスンしている場合は、問題になります。

お役に立てば幸いです。自作は物事を少し見苦しくする可能性があり、私が話し合った多くの人々が代わりにVMの使用を奨励すると聞いたことがあります。


これに貢献してくれてありがとう。それがあなたにもう少し背景を与えるのを助けるならば、homebrewは単にpostgresをインストールするときにこのスクリプトを実行します。github.com/Homebrew/homebrew-core/blob/master/Formula/…見直して、発見された情報からさらに洞察を共有していただければ幸いです。人々が必要としているのは、なぜこのエラーが発生するのかをデバッグするための簡単な方法です。
Evolve

そのスクリプトについて私が理解できることに基づいて、おそらく「HOMEBREW_PREFIX」の下の「var」ディレクトリに「postgres.log」があります。そのログファイルには、起動しようとしているPGに関する情報が含まれます(何らかの理由で起動に失敗した場合を含む)。ここでは、ポート5432上の別のプロセスのリスニングのために起動に失敗したPGを示すメッセージ例である:
スティーブン・フロスト

2016-12-19 09:11:59.582 EST [20669]ログ:IPv4ソケットをバインドできませんでした:アドレスはすでに使用中です2016-12-19 09:11:59.582 EST [20669]ヒント:別のポストマスターがポート5432ですでに実行されています?そうでない場合は、数秒待ってから再試行してください。2016-12-19 09:11:59.582 EST [20669]警告:「localhost」の待機ソケットを作成できませんでした2016-12-19 09:11:59.582 EST [20669]致命的:TCP / IPソケット2016を作成できませんでした-12-19 09:11:59.582 EST [20669]ログ:データベースシステムがシャットダウンします
Stephen Frost

さらに、そのスクリプトはデフォルトのソケットディレクトリを変更しないように見えるので、/ tmp /にする必要があります。PGデータディレクトリ({HOMEBREW_PREFIX} / var / postgresのように見える)でpostgresql.confファイルを探し、「unix_socket_directories」を探すことができます。デフォルトではコメントアウトされていますが、デフォルトの設定になっています。例:
Stephen Frost

#unix_socket_directories = '/ tmp'#ディレクトリのコンマ区切りリスト
Stephen Frost

2

Homebrewを使用してMac 10.15.5で実行すると、このエラーが発生しました。

postresqlが終了すると自動的に削除されるpostmaster.pidというファイルがあります。

次のことを行わない場合

  • brew services stop postgresql <--- rmがdbを破損する前に終了できない
  • sudo rm /usr/local/var/postgres/postmaster.pid

1

原因

Lionにはpostgresのバージョンがすでにインストールされており、デフォルトでそれらのバイナリを使用します。一般に、自作のpostgresバイナリへのフルパスを使用することでこれを回避できますが、他のプログラムでまだ問題がある可能性があります。

ソリューション

カールhttp://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

経由

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/


1

このエラーが発生する理由の1つは、コンピュータを再起動するとローカルのpostgresデータベースがシャットダウンすることです。新しいターミナルウィンドウで、次のように入力します。

$psql -h localhost 

サーバーを再起動します。


1

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

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

私はPostgreSQL 9.3を持っていて、同じエラーが出ました、

サーバーに接続できませんでした:接続が拒否されましたサーバーはホスト "localhost"(127.0.0.1)で実行されており、ポート5432でTCP / IP接続を受け入れていますか?

私はこれを使ってこれを修正しました:

chmod 777  /var/lib/pgsql/9.3/data/pg_hba.conf 
service postgresql-9.3 restart

わたしにはできる。


このファイルは私には存在しません
allthesignals

1

それだけの価値があるので、ファイルに(のmd4代わりにmd5)タイプミスがあったときにも同じエラーが発生しましたpg_hba.conf/etc/postgresql/9.5/main/pg_hba.conf

私が行ったようにここに来た場合は、そのファイルをもう一度確認して、そこにとんでもないことがないことを確認してください。


pg_hba.confファイルはどこにありますか?
ブバカズバ2016

1
/etc/postgresql/{postgres_version}/main/pg_hba.conf
Aidan Melen

0

ローカルでPostgreSQLを実行すると、さまざまな問題が発生する可能性があります。インストールされているすべてのバージョンのpostgresをクリーンアップして、新しく開始することをお勧めします。インストールしたら、最新のRailsプロジェクトがあれば、データベースを簡単に再作成できますdb/schema.rb

MacにPostgreSQLを通常インストールする方法は次のとおりです。ローカルでrootユーザーの下でデータベースを実行している場合は、todoユーザーを作成する最後の手順を省略できます


0

その理由の1つは、

postgresql.confファイルのunix_socket_directoriesが、探しているディレクトリにリストされていません。

質問の例では、ディレクトリ/ tmpを探しています。これはpostgresql.confファイルで指定する必要があります

このようなもの:

unix_socket_directories = '/var/run/postgresql,/tmp'    # comma-separated list of directories

この解決策は私にとってうまくいきました。


0

あなたがMacOSを使っていてhomebrewを使っているなら、私はこの答えが非常に役に立ったと感じました:

https://stackoverflow.com/a/27708774/4062901

私の場合、サーバーは稼働していましたが、アップグレードのため接続に問題がありました(注:醸造サービスを使用しています)。Postgresが実行されている場合はcat /usr/local/var/postgres/server.log、ログが何を言っているかを試してみてください。私のエラーは、接続の問題ではなく、移行でした。

また、手動での移行後、提案は機能しますが(機能しますが)、ユーザー用のテーブルがなくなっていることがわかりました。このコマンドを試して修正してください:createdbpsqlを介して応答:FATAL:データベース "<user>"は存在しません


0

実行してエラーが表示されたらすぐにPostgresを再起動し、再brew services restart postgresql試行してください


0

私がコマンドを実行できrm /usr/local/var/postgres/postmaster.pidなかったのは、homebrewを使用して特定のバージョンのpostgresqlをインストールしたためです。

正しいコマンドはrm /usr/local/var/postgres@10/postmaster.pidです。

その後brew services restart postgresql@10


-5

とても簡単です。database.yamlファイルにのみホストを追加します。


host:127.0.0.1またはhost:localhostなど。
リカルド-Nextv 14

誰もがシンプルなソリューションを愛しています。しかし、これはどのように機能しますか?上記のコメントで述べたように、これを検索すると、多くの複雑な経路をたどることができました。少し詳しく説明して、問題の実際の内容と、この単純な変更が問題にどのように対処するかについて、もう少し背景を教えてください。これに貢献してくれてありがとう!:)
2014

違いは、IP接続の場合、ソケットファイルの場所を気にする必要がないことです。代わりに、IPアドレスについて心配します。
ジムナスビー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.