4

この同じアプリで同じPostgresデータベースを1か月間問題なく使用しており、このエラーが今日ランダムに発生するまで、データベース内の何も変更していません。ただし、今日、Postgresは「rails」を実行しようとするとランダムにこのエラーをスローし始めました(createdbまたはcreateuserを実行すると同じタイプのエラーが発生します)。

/Users/Joe/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.2/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize'を終了します:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません(PG :: Error)サーバーはローカルで実行されており、Unixドメインソケット「/tmp/.s.PGSQL.5432」で接続を受け入れていますか?

本当に奇妙なのは、私の友人が昨日まったく同じエラーを起こし(同じアプリで作業している)、http://nextmarvel.net/blog/2011/09/brew-install-postgresqlからスクリプトを実行することで修正されたことです。 -on-os-x-lion/。スクリプトを実行した後、彼はPG gemをアンインストールして再インストールし、すべてが機能するようにしました。ただし、彼はOS X Lionを実行しており、私はSnow Leopardを実行しているため、スクリプトは機能しません。

(1)これがランダムに発生し始める理由と(2)それを修正する方法についてのアイデアはありますか?

4

5 に答える 5

2

今日も同様の問題がありましたが、私の場合、postgres (MacOS 10.8 に自作でインストール) は実行されていませんでしたが、起動または再起動できませんでした。クラッシュのためにゾンビがソケットをブロックしているように見えたので、解決するために次のことを行いました

lsof -i :5432

これは、ブロックしているプロセスの PID を示していました。

kill -9 PID

そしてpostgresは正常に再起動しました。

HTH

于 2013-04-03T13:15:43.713 に答える
1
  • /tmp/.s.PGSQL.5432何かがソケットを削除したのかもしれません-/tmp/たとえばクリーニングサービス。
  • :host => 'localhost'を接続引数として使用して接続できるようになるかもしれませんPG::Connection.new()— Unix ソケットの適切なパスを特定する際の問題や、ファイルのパーミッションの問題を回避できます。
  • 使用したくない場合(ソケットよりも少し遅い可能性があります)、オペレーティング システムの管理者としてコマンドをlocalhost使用している場所を見つけることができます。lsof | grep PGSQL/var/run/postgres/.s.PGSQL.5432:host => '/var/run/postres/'
于 2012-06-08T07:19:42.103 に答える
0

Railsを起動したときに同じエラーが発生していました(そのようなファイルやディレクトリはありません)。PostgreSQLワンクリックインストーラーを使用してpostgresを再インストールし、再起動すると問題が解決しました。

私の場合、これはMountain Lionをインストールした後に発生しました。これにより、おそらくtmpディレクトリがクリーンアップされました。

于 2012-07-27T21:33:31.617 に答える
0

私は同じ問題に直面し、server.log を確認すると、その var/postgres フォルダーと一部の conf ファイルが見つからなかったことがわかります。

私はこれをしましたが、その場合はデータを失いました

brew uninstall postgres
brew install postgres
initdb `brew --prefix`/var/postgres/data -E utf8``

それは私にとってはうまくいき、すべてが正常に戻りました。

于 2015-05-14T09:23:03.053 に答える