他のいくつかのように、プロジェクトで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/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パスを検索するものが実際に実際のパスを見つけるようにします(それが理にかなっている場合)。
これは、試してみることがいくつかあるリンクです。具体的には、上記のようにシンボリックリンクを実行します。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を実行するかを決定するコア要件であり、これらの問題のほとんどにつながると言われています。