web-dev-qa-db-ja.com

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

他の人と同じように、rake dbを実行するとこのエラーが発生します。自分のプロジェクト内で移行するか、私の Ruby on Rails 3.2アプリケーション用のデータベースタスクを試してください。

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

私はずっと前に 自作 を使って PostgreSQL をインストールし、そして 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

これをどのように修正しますか?私は何を見ていないのですか?

シモンズ:~/Library/LaunchAgentsは2つのPostgreSQLの.plistファイルを含みます。それが適切かどうかはわかりません。

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

私は以下を試してみて、以下のような結果を得ました。

$ psql -p 5432 -h localhost

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パスを見ている人が実際に実際のパスを見つけられるようにします。

これは私が試してみるべきいくつかのより多くの事、特にシンボリックリンクを上記のようにすることを見つけたリンクです。Mac OSX 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が実行されるのかを決定する重要な要件であり、これらの問題の大部分を引き起こすのは私が言っていることです。

129
Evolve

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

これを削除してサーバーを起動してください。

チェック - https://github.com/mperham/lunchy はlaunchctlの素晴らしいラッパーです。

97
Hass

更新:こちらISあなたがOSXを使っているならば、より良い解決策...

http://postgresapp.com/


古い答え:

これが修正プログラムです、詳細はこちら:

https://github.com/mxcl/homebrew/issues/5004

まず、データベースを停止してから、

  1. cd/var
  2. rm -r pgsql_socket
  3. ln -s/tmp pgsql_socket
  4. chown _postgres:_postgres pgsql_socket
  5. postgresを再起動します(あなたのコンピュータではありません)
56
josephmisiti

私にとっては、これは動作します

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

あなたが言及した上記のエラーのために、これは私のためにうまくいきます..

1)インストール中にデフォルト以外のデフォルトポート番号5432が指定されている場合は、postgres.confファイルに指定されているデフォルトポート番号を変更してください。

(または)

2)postgresql.confファイルのport noを変更してDBサーバを再起動します

(または)

3)psql type fullコマンドの代わりに

"psql -p 5432 -h localhost"

  • サーバー名とポート番号
14
solaimuruganv

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

logindを起動してpostgresqlを起動するには、

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

または手動で起動します

pg gemをインストールしてください

$ gem install pg

助けていただければ幸いです

10
Fabricio

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

This answerは、問題を解決するための代替方法とともに、より包括的な説明を提供します。

8
silvenon

そのため、ここでの多くの問題について、人々はすでにpsqlを実行していてpostmaster.pidを削除しなければならなかったようです。しかし、postgresを私のシステムに正しくインストールしたことさえなかったので、私はその問題を抱えていませんでした。

これは私にとってMAC OSX Yosemiteでうまくいった解決策です。

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

お役に立てれば!いたずら書き!

また、この答えは私を最も助けました: https://stackoverflow.com/a/21503349/3173748

5
superjisan

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

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

これらのファイルはdataディレクトリにありますが、実際の場所は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
4
oenpelli

私はpostgresをアップグレードすることによってこれを直しました。

brew update
brew upgrade

それから、10から11にアップグレードしたので、新しいメジャーバージョンと互換性があるようにデータベースもアップグレードしなければなりませんでした。

brew postgresql-upgrade-database

(情報源 https://github.com/facebook/react-native/issues/18760#issuecomment-410533581

3
Nelu

私は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をリッスンしているものを確認します。問題になります。

それが役立つことを願っています。私は、自作が少し醜くなり、多くの人が代わりにVMを使うように勧めたと聞いたことがあります。

2
Stephen Frost

原因

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

解決策

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

Via

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

1
SocoM

私は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

わたしにはできる。

1
Mahesh Shitole

価値があるので、md4ファイル(md5)にタイプミス(pg_hba.confではなく/etc/postgresql/9.5/main/pg_hba.conf)があったときにも同じエラーが発生しました。

私が行ったようにあなたがここに来た場合は、そのファイルを1回ダブルチェックして、そこにばかげたことが何もないことを確認してください。

1
Zach Lamberty

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

$psql -h localhost 

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

0
Pstrazzulla

あなたがMacOSを使っていて自作を使っているなら、私はこの答えが非常に役に立ちました:

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

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

また手動移行の後に彼らは提案します(それはうまくいきますが)私は私のユーザーのためのテーブルがもうないことがわかりました。このコマンドを試してみてください。createdbpsql:FATAL:データベース "<user>"は存在しません

0
rickrizzo

理由の1つはそれである可能性があります

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

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

このようなもの:

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

この解決策は私のために働いた。

0

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

これが私が通常どのようにしている MacにPostgreSQLをインストールする です。データベースをローカルのrootユーザーで実行している場合は、最後のtodoユーザーを作成する手順を省略することをお勧めします。

0

brew services restart postgresqlを実行してエラーが発生したらすぐにPostgresを再起動してから、もう一度やり直してください。

0
Kanke