148

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

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

私はずっと前にHomebrewでPostgreSQLをインストールしましたが、 MongoDBのインストールを試みた後、最近PostgreSQLのインストールが同じになることはありませんでした。OS X v10.6SnowLeopardを実行しています。

何が問題になっていますか?また、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 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パスを検索するものが実際に実際のパスを見つけるようにします(それが理にかなっている場合)。

これは、試してみることがいくつかあるリンクです。具体的には、上記のようにシンボリックリンクを実行します。MacOSX Lion Postgresは、/tmp/.s.PGSQL.5432での接続を受け入れません。私はまだ誰かがOSXにPostgreSQLをインストールする背後にある概念とそれがすべてとても難しい理由のまともな説明をまとめてくれることを望みます。

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

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

次に、以下を実行します。

$ echo $PATH

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

実行するPostgreSQLのコピーのパスエントリが、OSXシステムのPostgreSQLへのパスの前に来ることを確認してください。

これは、どのPostgreSQLを実行するかを決定するコア要件であり、これらの問題のほとんどにつながると言われています。

4

22 に答える 22

110

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

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

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

于 2014-02-25T13:24:18.887 に答える
15

これは、あなたが言及したエラーに対して私にとってはうまくいきました。次のいずれかを実行します。

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

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

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

    psql -p 5432 -h localhost   
    
    • サーバー名とポート番号
于 2012-09-18T10:17:23.947 に答える
13

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

お役に立てば幸いです

于 2013-05-22T13:53:46.517 に答える
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?」は、問題を解決するための代替方法とともに、より包括的な説明を提供します。

于 2013-12-30T13:41:45.417 に答える
4

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
于 2013-10-21T01:36:09.440 に答える
3

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 でリッスンしているものを確認します。Mac OSX PG がすでにそのポートでリッスンしている場合は、問題になる。

それが役立つことを願っています。Homebrew は物事を少し醜くする可能性があると聞いたことがありますが、私が話した多くの人々は、代わりに VM を使用することを勧めています。

于 2016-12-18T03:04:10.310 に答える
1

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

$psql -h localhost 

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

于 2013-11-11T19:12:08.350 に答える
1

原因

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

ソリューション

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

経由

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

于 2013-07-22T04:03:47.713 に答える
1

Hello world :)
私にとって最善だが奇妙な方法は、次のことをすることでした。

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

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

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

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

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

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

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

于 2014-02-01T20:31:45.007 に答える
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

わたしにはできる。

于 2015-01-20T10:45:39.710 に答える
1

価値があるのmd4md5pg_hba.confファイル/etc/postgresql/9.5/main/pg_hba.conf(

私のようにここにたどり着いた場合は、そのファイルを一度ダブルチェックして、そこにばかげたことがないことを確認してください.

于 2015-08-09T20:21:26.643 に答える
0

その理由の一つとして考えられるのは

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

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

このようなもの:

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

このソリューションは私にとってはうまくいきました。

于 2016-10-06T13:58:07.690 に答える
0

MacOS を使用していて自作を使用している場合、この回答が非常に役立つことがわかりました。

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

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

また、彼らが提案する手動の移行後 (これは機能しますが)、ユーザー用のテーブルがなくなっていることがわかりました。それを修正するには、次のコマンドを試してください: createdb( psql で回答: FATAL: database "<user>" does not exist )

于 2016-11-20T19:32:02.337 に答える
-5

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

于 2014-04-12T01:45:04.167 に答える