2016-06-24 6 views
0

同様の質問がたくさんありますが、すべてが少し異なります。rails 4 PG :: ConnectionBadがサーバーに接続できませんでした

Gemfile:

source 'https://rubygems.org' 

gem 'rails', '4.2.6' 
gem 'pg', '~> 0.15' 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
gem 'sdoc', '~> 0.4.0', group: :doc 

group :development, :test do 
    gem 'byebug' 
    gem 'rspec-rails', '~> 3.4' 
end 

group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 

のRails 4.2.6とコマンドラインでpsqlをやっては返さ:

PG::ConnectionBad (could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

はまた、レール・サーバを起動し、しようとした後、ブラウザでも同じですルートパスをロードします。

私は、コマンドラインでpostgresをやっては返す、いずれかの動作しないことが判明:

postgres does not know where to find the server configuration file. 
You must specify the --config-file or -D invocation option or set the PGDATA environment variable. 

答えて

1

私はthis問題を発見し、コマンドラインでexport PGDATA=/usr/local/var/postgresを走りました。これは私がpostgresとpostgresを開始することを可能にしました(私はこれが必要であることを知らなかった - なぜRailsはあなたのためにそれをしませんか?)そしてrake db:create、新しいタブでレールサーバを起動し、これが最善の解決策であるかどうかは分かりませんが、分かち合う価値があると思いました。

+1

あなたのpostgresサーバが稼働している必要があります。 Railsの応答性がデータベースサーバを起動しません – DennisCastro

1

/usr/local/var/postgres/postmaster.pidを削除してから、postgresを再起動してください。
Mac OSでは、簡単に再起動するためにlunchyを使用できます。

0

Re-posted Answer for Convenience:

を追加しました:

OSXの場合homebrewとインストールを管理します。

インストール自作:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

更新それ:brew update

インストールDB:launchctlを持つbrew install postgresql

ロード:launchctl load -w /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist

回答:

それは同じくらい簡単かもしれませんとして失効したPIDファイル。あなたのコンピュータがシャットダウンプロセスを完全に完了しなかったので、postgresはPID(プロセスID)ファイルを削除しなかったので、黙って失敗する可能性があります。 PIDファイルはpostgresによって使用され、一度に1つのサーバインスタンスしか実行されていないことを確認します。だから、もう一度始めようとすると、すでにPostgresに別のサーバインスタンスが起動されたことを伝えるPIDファイルがあるので(起動していなくても、PIDをシャットダウンして削除することはできませんでした) 。

  1. これを修正するには、PIDファイルを削除するか名前を変更します。 postgresのデータディレクトリを探します。 homebrewを使用してMACでそれは/usr/local/var/postgres/、他のシステムは/usr/var/postgres/かもしれません。

  2. これが問題であることを確認するには、ログファイル(server.log)を参照してください。最後の行では、あなたが表示されます。FATAL: lock file "postmaster.pid" already exists HINT: Is another postmaster (PID 347) running in data directory "/usr/local/var/postgres"?

  3. もしそうなら、rm postmaster.pid

  4. は、サーバーを再起動し

    。 launchctl(homebrew)を使用しているMacでは、次のコマンドを実行するとサーバーが再起動します。

    launchctl unload /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist

    launchctl load -w /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist

+0

代わりに複写としてマークすることができたときに、なぜそれをコピーするのですか? –

+0

どうやってそれをしますか? – blnc

関連する問題