他の人と同じように、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が実行されるのかを決定する重要な要件であり、これらの問題の大部分を引き起こすのは私が言っていることです。
Postgresディレクトリにpostmaster.pidがないことを確認してください。おそらく/usr/local/var/postgres/
これを削除してサーバーを起動してください。
チェック - https://github.com/mperham/lunchy はlaunchctlの素晴らしいラッパーです。
更新:こちらISあなたがOSXを使っているならば、より良い解決策...
古い答え:
これが修正プログラムです、詳細はこちら:
https://github.com/mxcl/homebrew/issues/5004
まず、データベースを停止してから、
私にとっては、これは動作します
rm /usr/local/var/postgres/postmaster.pid
あなたが言及した上記のエラーのために、これは私のためにうまくいきます..
1)インストール中にデフォルト以外のデフォルトポート番号5432が指定されている場合は、postgres.confファイルに指定されているデフォルトポート番号を変更してください。
(または)
2)postgresql.confファイルのport noを変更してDBサーバを再起動します
(または)
3)psql type fullコマンドの代わりに
"psql -p 5432 -h localhost"
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
助けていただければ幸いです
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は、問題を解決するための代替方法とともに、より包括的な説明を提供します。
そのため、ここでの多くの問題について、人々はすでにpsqlを実行していてpostmaster.pid
を削除しなければならなかったようです。しかし、postgresを私のシステムに正しくインストールしたことさえなかったので、私はその問題を抱えていませんでした。
これは私にとってMAC OSX Yosemiteでうまくいった解決策です。
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
お役に立てれば!いたずら書き!
また、この答えは私を最も助けました: https://stackoverflow.com/a/21503349/3173748
実行するとき: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
私はpostgresをアップグレードすることによってこれを直しました。
brew update
brew upgrade
それから、10から11にアップグレードしたので、新しいメジャーバージョンと互換性があるようにデータベースもアップグレードしなければなりませんでした。
brew postgresql-upgrade-database
(情報源 https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
私は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を使うように勧めたと聞いたことがあります。
原因
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/
私は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
わたしにはできる。
価値があるので、md4
ファイル(md5
)にタイプミス(pg_hba.conf
ではなく/etc/postgresql/9.5/main/pg_hba.conf
)があったときにも同じエラーが発生しました。
私が行ったようにあなたがここに来た場合は、そのファイルを1回ダブルチェックして、そこにばかげたことが何もないことを確認してください。
このエラーが発生する理由の1つは、コンピュータを再起動するとローカルのpostgresデータベースがシャットダウンすることです。新しいターミナルウィンドウで、単純に次のように入力します。
$psql -h localhost
サーバーを再起動します。
あなたがMacOSを使っていて自作を使っているなら、私はこの答えが非常に役に立ちました:
https://stackoverflow.com/a/27708774/4062901
私にとっては、私のサーバーは稼働していましたが、アップグレードのために接続に問題がありました(注:私はbrewサービスを使用しています)。 Postgresが実行されているなら、cat /usr/local/var/postgres/server.log
を試して、ログが何を言っているかを見てください。私のエラーは移行であり、接続の問題ではありませんでした。
また手動移行の後に彼らは提案します(それはうまくいきますが)私は私のユーザーのためのテーブルがもうないことがわかりました。このコマンドを試してみてください。createdb
( psql:FATAL:データベース "<user>"は存在しません )
理由の1つはそれである可能性があります
postgresql.confファイル内のunix_socket_directoriesは、それが探しているディレクトリと共にリストされていません。
質問の例では、ディレクトリ/ tmpを探しています。これはpostgresql.confファイルで指定する必要があります。
このようなもの:
unix_socket_directories = '/var/run/postgresql,/tmp' # comma-separated list of directories
この解決策は私のために働いた。
PostgreSQLをローカルで実行すると、さまざまな問題が発生する可能性があります。私はインストールされているすべてのバージョンのpostgresをきれいにして、新しく始めることをお勧めします。一度インストールすれば、Railsプロジェクトに最新のdb/schema.rb
があれば、データベースを簡単に再作成できます。
これが私が通常どのようにしている MacにPostgreSQLをインストールする です。データベースをローカルのrootユーザーで実行している場合は、最後のtodo
ユーザーを作成する手順を省略することをお勧めします。
brew services restart postgresql
を実行してエラーが発生したらすぐにPostgresを再起動してから、もう一度やり直してください。