最近、OSX 10.7にアップグレードしました。この時点で、psqlサーバーに接続しようとすると、Railsインストールが完全に中断されました。私がコマンドラインからそれを行うとき
psql -U postgres
まったく問題なく動作しますが、Railsサーバーまたはコンソールを同じユーザー名とパスワードで実行しようとすると、このエラーが発生します
...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize': could not connect to server: Permission denied (PGError)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
何が起こっているかもしれないアイデアは非常に役立つでしょう!ありがとう!
これはPATHの問題です。 Mac OSX Lionでは、現在システムにPostgresqlが含まれています。 which psql
を実行すると、HomeBrewの正しいusr/bin/psql
の代わりにusr/local/bin/psql
が表示される可能性があります。 brew doctor
を実行すると、usr/local/bin
をPATH環境変数の先頭に追加する必要があることを示すメッセージが表示されます。
.bash_profileまたは.profile、または使用しているシェルの編集および追加:export PATH=/usr/local/bin:$PATH
PATH
の最初のエクスポートとして、シェルセッションを終了するか、source ~/.bash_profile
を使用してファイルをソースすると、再びOKになります。
興味のある方のために、解決策をまとめました。必要なのは追加するだけでした
Host: localhost
私の環境のdatabase.ymlに追加しましたが、すべてがグレービーでした。
私はMountain Lionでこの問題を抱えていましたが、私のために働いたのは この修正 だけでした。
実際のターゲットがどこにあるかを確認します。
Sudo find / -name .s.PGSQL.5432
このディレクトリを作成する必要がありました。
mkdir /var/pgsql_socket/
次に、上記の検索結果を使用して、次のシンボリックリンクを作成します。
ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
Mountain Lionのほとんどの人は、ディレクトリを作成してシンボリックリンクを実行するだけで、シンボリックリンクが機能しない場合を除き、検索に時間を費やすことはできないと思います。
PS-私のPostgreSQLは公式インストーラーによってインストールされました。
パスが変更されても問題が解決しない場合(私の場合と同様)、これも試してください...
gem pristine pg
問題は(部分的に)pg gem自体にあるようです。ビルド時に、ドメインソケットの場所を特定します。ドメインソケットの場所を変更した後、gemを再構築するまで有効にならないようです。
公式インストーラーから直接インストールした場合、コマンドにホストを追加するだけで、パスを変更せずに機能します。
psql -h localhost -U postgres
私は同じ問題を抱えていて、ジョン・ワンのソリューションを機能させるのに問題がありました。 Darrenが指摘したように、pg gemに問題があります。動作させるには、次のことが必要です。
gem uninstall pg
次に再インストールします。
それが機能しました。
これは自作用ですか?ポートはそれを入れるようです:
/opt/local/lib/postgresql91
必ずエクスポートを使用してください
PATH=/opt/local/lib/postgresql91/bin:$PATH
Macポートの問題: https://trac.macports.org/ticket/30125
私もこれに遭遇しましたが、私はpostgresを(homebrewではなく)自分でインストールしていました。その場合、psqlへの古いパス(/ usr/local/binかもしれませんが、私にとっては/ usr/local/pgsql/binでした)を見つけ、それを$ PATHに追加する必要があります。
(前)which psql
=>/usr/bin/psql
(修正)export PATH =/usr/local/psql/bin:$ PATH
(後) `which psql '=>/usr/local/psql/bin
source ~/.bash_rc
へのJohn Wangの提案は、後でそれをbash_rcに追加することは黄金色です。
@pilifによって指摘されているように、OSユーザー固有であるか、ドメインソケットの代わりにTCPを使用するようにPostgresを再マップするため、最も賛成の回答に満足できません。コアシステムパスの前にBrewのパスをチェックするためにシステムレベルでデフォルトパスを並べ替える別のソリューションを見てきましたが、これはこのような他のすべてのアプリケーション名の衝突に影響を与える可能性があるため危険です。
このサイト 同僚が見つけたソリューションの詳細。その結果、単一のシェルスクリプトを実行することになります。
これには、システムのデフォルトのPostgresがbrewがインストールしたものであるという警告が伴うので、それがあなたに合っているかどうかについて判断する必要があります。私は9.xを超えるPostgres 8.4を特に必要としているとは思いませんが、YMMV
私のために働いた別の可能な解決策は、削除することによってポストマスターファイルをリセットすることです。単に実行する:
rm /usr/local/var/postgres/postmaster.pid
ここで見つけることができるエラーのログを確認する価値があります。
/usr/local/var/postgres/server.log
私が持っていたエラーメッセージは:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 161) running in data directory
"/usr/local/var/postgres"?
その後、すべてがうまくいきました。
私の場合、間違った共有メモリ設定のためにサーバーが起動しませんでした。最初はいくつかのpostgresプロセスが実行されていたため混乱しましたが、それらは標準のシステムプロセスでした。 postmaster
プロセスを探してください!
私がする必要があるのは、 共有メモリの設定を変更する でした。私の場合、パス設定をいじる必要はありませんでした。
PostgreSQLは/ Library/PostgreSQLにインストールされているため、/ usr/varが機能しませんでした。
Wozが正しいようです。MacbookProの蓋を閉じるたびにクラッシュするからです。クラッシュ後の動作は次のとおりです。
Sudo su postgres -c "/Library/PostgreSQL/9.2/bin/pg_ctl -m fast -D /Library/PostgreSQL/9.2/data restart"
私はRailsを初めて使用しますが、次のコードをdatabase.ymlに追加するとうまくいきました。
Host: localhost
port: 5432
RailsがデフォルトではTCPではなくドメインソケットになっているのは不明ですが、PostgreSQLはデフォルトではドメインソケットを設定しません。
データベースのホストを指定する必要がある場合があります。
$ PATHを永続的に変更したい場合は、これを試してください:
defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"
これにより、~/.MacOSX/environment.plist
が書き換えられます。