Rails 4.0サーバーを起動するたびに、この出力が表示されます。
Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500
PG::ConnectionBad - 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" (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" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/Rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/Rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/Rails/rack/logger.rb:21:in `call'
quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/Rails/engine.rb:511:in `call'
railties (4.0.0) lib/Rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
thin (1.5.1) lib/thin/connection.rb:54:in `process'
thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
thin (1.5.1) lib/thin/server.rb:159:in `start'
rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
rack (1.5.2) lib/rack/server.rb:264:in `start'
railties (4.0.0) lib/Rails/commands/server.rb:84:in `start'
railties (4.0.0) lib/Rails/commands.rb:78:in `block in <top (required)>'
railties (4.0.0) lib/Rails/commands.rb:73:in `<top (required)>'
bin/Rails:4:in `<main>'
私はMavericks OS X 10.9を実行しているので、それが問題かどうかはわかりません。私は全力を尽くしたが、何もうまくいかないようだ。私はpostgresとpg gemの両方を何度もアンインストールしてインストールしました。
これは私のdatabase.ymlファイルです
development:
adapter: postgresql
encoding: unicode
database: metals-directory_development
pool: 5
username:
password:
template: template0
Host: localhost
port: 5432
test: &test
adapter: postgresql
encoding: unicode
database: metals-directory_test
pool: 5
username:
password:
template: template0
Host: localhost
port: 5432
staging:
adapter: postgresql
encoding: unicode
database: metals-directory_production
pool: 5
username:
password:
template: template0
Host: localhost
production:
adapter: postgresql
encoding: unicode
database: metals-directory_production
pool: 5
username:
password:
template: template0
Host: localhost
cucumber:
<<: *test
誰かが私を手伝ってくれる?
古くなった PIDファイルと同じくらい単純かもしれません 。お使いのコンピュータはシャットダウン処理を完全に完了していないため、静かに失敗する可能性があります。つまり、 postgres は _ pid _ (プロセスID)ファイルを削除しませんでした。
PIDファイルはpostgresによって使用され、一度に1つのサーバインスタンスのみが実行されていることを確認します。そのため、再び起動すると、 postgres にサーバーの別のインスタンスが起動されたことを通知する _ pid _ ファイルがすでに存在するため、失敗します(実行されていなくても失敗しただけです)。シャットダウンしてPIDを削除しないでください。
/usr/local/var/postgres/
ですが、他のシステムでは/usr/var/postgres/
かもしれません。server.log
)を見てください。最後の行にあなたが見るでしょう:致命的:ロックファイル "postmaster.pid"は既に存在します
ヒント:データディレクトリ "/ usr/local/var/postgres"で他のpostmaster(PID 347)が起動していますか?
rm postmaster.pid
サーバーを再起動してください。 (自作の)launchctlを使用しているMacでは、次のコマンドでサーバーを再起動します。
launchctl unload homebrew.mxcl.postgresql.plist
launchctl load -w homebrew.mxcl.postgresql.plist
または Brew の新しいバージョンの場合
brew services restart postgresql
たくさんの検索と分析の結果、あなたがubuntuを使っているのなら、端末にこのコマンドを書いてenterを押すだけで解決策が見つかりました。
Sudo service postgresql restart
これはあなたのPostgreSQLを再起動させます、これがあなたにとって助けになることを願っています。
Chris Sladeの答えに従って問題を解決することができましたが、サーバーを再起動するには、次のコマンドを使用する必要がありました。
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
私が見つけたこと ここ (下部にあるpjammerの答え)
この問題はpostgresが正しくシャットダウンしないときに起こります。これが3つの簡単なステップでこの問題を解決した方法です。
ステップ1: /あなたのpostgresディレクトリに行く
Macユーザー これは/usr/local/var/postgres
にあります、他の人は/usr/var/postgres/
を見るかもしれません。
ステップ2: /このコマンドを実行して.pid
ファイルを削除する。
rm postmaster.pid
ステップ3: サーバーを再起動してください
Macユーザー
brew services restart postgresql
Linuxユーザー
Sudo service postgresql restart
最後にアプリを再起動してください。
あなたのシステムにpostgresqlがインストールされていますか?そうでない場合は、 postgresqlのインストール を参照してください。 postgresql をあなたのシステムにうまく統合した後、あなたのシステム端末でそのようなものをタイプすることができます:
which psql
#=> /usr/bin/psql
その後、postgresqlに次のようにユーザーとデータベースを作成する必要があります。
Sudo su - postgres
psql
それからあなたはあなたの端末の中で以下を見ることができます
postgres=#
そこにタイプしてください:
CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;
これをした後、それからあなたはあなたのdatabase.yml
を修正する必要があります。おそらくあなたはそのようなものが必要です:
development:
adapter: postgresql
encoding: unicode
database: metals-directory_development
pool: 5
username: yourname
password: passwordhere ### password you have specified within psql
Host: localhost
port: 5432 ### you can configure it in file postgresql.conf
Postgresqlに問題があるのならまた、 pg_hba.confをチェックすることをお勧めします
Postgresでこの種の問題を修正し、Mac OSX
でPostgresを操作するには、おそらくこれがBESTとEASYIEST私がこれまでに見つけたの解決策:
ただダウンロードしてインストールして幸せになりましょう:)
Pgをアンインストールします。
gem uninstall pg
Postgresをアンインストールします。
brew uninstall postgres
Postgresフォルダを無効にしてください。
rm -rf /usr/local/var/postgres
再起動(おそらく不要)
Pgを再インストールします。
brew install postgres
Chris Sladeの答えに対する私のコメントは、大変なやり方で始まりました。今、私は醸造サービスを利用しています。
brew install services
それでpgを起動します。
brew services start postgresql
Gemを再インストールしてください。
gem install pg
そして、ぼろぼろのおじさん。
ファイル postgresql.conf (ubuntu
は /etc/postgresql/X.X/main/postgresql.conf にあります)を確認し、次の行を探します。
listen_addresses="localhost"
それを変更してみてください。
listen_addresses="*"
それはすべてのIPを受け入れているでしょう、次に言う行をチェックしてください:
port=5432
私のpostgresql-9.2ではデフォルトで 5433 の代わりに 5432 を使います。 restart postgresサーバーを忘れないでください。
頑張ってください。
@Magneで説明されているように、エラーPG::ConnectionBad - could not connect to server: Connection refused
はPostgreSQLの メジャー/マイナーバージョン アップグレード(例えば9.5 -> 9.6
または9 -> 10
)の後に表示されることがあります。
PostgreSQLバージョン9.6のリリース後にbrew upgrade postgresql
を実行した後にこのエラーが発生しました。問題は、メジャー/マイナーバージョンのアップグレードで古い日付を新しいバージョンに移行するために追加の手順が必要なことです。
これがあなたの問題かどうかを調べる方法
これが問題であるかどうかは、homebrewと一緒にインストールされたPostgreSQLの最新バージョンをチェックすることで確認できます。
$ brew info postgresql
/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00
...そしてそれを現在のPG_VERSIONと比較する
$ cat /usr/local/var/postgres/PG_VERSION
9.5
PG_VERSIONが最新のBREW式より小さく、その違いがメジャー/マイナーバージョンの変更である場合、これはおそらくあなたの問題です。
修正方法(データのアップグレード方法)
以下の手順は9.5から9.6へのアップグレード用です。自分のアップグレードに合わせてバージョン番号を変更してください
ステップ1.PostgreSQLがオフになっていることを確認してください。
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql
Step 2.新しい自然のままのデータベースを作る:
$ initdb /usr/local/var/postgres9.6 -E utf8
Step 3.新旧のバイナリバージョンを確認してください。
$ ls /usr/local/Cellar/postgresql/
9.5.3 9.5.4 9.6.1
この例では、9.5.4バイナリから9.6.1バイナリにアップグレードしています。
手順4pg_upgrade ユーティリティを使用して、現在のデータを新しいデータベースに移行します。
$ pg_upgrade \
-d /usr/local/var/postgres \
-D /usr/local/var/postgres9.6 \
-b /usr/local/Cellar/postgresql/9.5.4/bin/ \
-B /usr/local/Cellar/postgresql/9.6.1/bin/ \
-v
-d
フラグは現在のデータディレクトリを指定します-D
フラグは、作成される新しいデータディレクトリを指定します-b
は古いバイナリを指定します-B
は、アップグレード先の新しいバイナリを指定しますステップ5.古いデータディレクトリを邪魔にならない場所に移動する
$ mv /usr/local/var/postgres /usr/local/var/postgres9.5
Step 6.新しく作成されたデータディレクトリをPostgreSQLが期待する場所に移動します
$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres
Step 7.もう一度PostgreSQLを起動します。
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql
Step 8.Railsにpg gemを使用している場合は、gemをアンインストールして再インストールして再コンパイルする必要があります(pg gemを使用していない場合はこの手順を省略してください)。
$ gem uninstall pg
$ gem install pg
Step 9.(optional)すべてうまくいっていることを自信を持って確認したら、次のコマンドを実行していくらかディスクスペースを取り戻すことができます。
brew cleanup postgresql
...そしてもしあなたが本当に勇敢に感じているのなら、あなたは次のコマンドで古いPostgreSQLデータディレクトリを削除することができます。
rm -rf /usr/local/var/postgres9.5/
(この回答は優れたブログ投稿 https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ に基づいて追加された回答)}
上で示唆したように、私はちょうど私のMac上で Postgres App を開き、Open Psql
をクリックし、psql
ウィンドウを閉じ、私の端末でmy Rails server を再起動しました。もうエラーはありません。
象を信頼する: http://postgresapp.com/ /
これは本当に私を助けたものです。
$ cd /usr/local/var/postgres/
$ rm postmaster.pid
Postgresを新しいメジャーバージョン(f.ex brew upgrade
から9.3.0
以上)にアップグレードした9.4.0
を実行した後にこの問題に遭遇した場合は、次のようにしてください。
@ dmitrygusevの修正プログラム https://github.com/Homebrew/homebrew/issues/35240
以下の公式[Postgresql]移行ガイドは助けになりました:
brew switch postgres 9.3.5 # presuming you already installed 9.4.1 pg_dumpall > outputfile launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist mv /usr/local/var/postgres /usr/local/var/postgres.old brew switch postgres 9.4.1 initdb -D /usr/local/var/postgres psql -d postgres -f outputfile
それで全部です。インポートがうまくいったかどうかを確認してから、バックアップを削除します。
rm outputfile rm -Rf /usr/local/var/postgres.old
ここでの問題はpostgresのメジャーバージョンアップグレードの際に、データベースを作り直す/移行することが必要であるということです。そしておそらくchown
ディレクトリか手動でinitdb
を呼び出します。
以下も参照してください。 データを失わずにPostgreSQLをバージョン9.5からバージョン9.6にアップグレードする方法?
Homebrewを使用していない場合に役立つ、その他のヒント。
PGサーバを手動で停止する方法:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop
PGサーバを手動で起動する方法:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Host: localhost
ファイルにdatabase.yml
を入れて、次のコマンドを実行します。
rake db:create db:migrate
Postgresファイルが/usr/local/var/postgres/
または/usr/var/postgres/
にあることを確認してから、そのフォルダーにあるpostmaster.pid
ファイルを削除します。
Osx Movajeで自分のMacをアップデートした後も同じ問題が起きました。
私はこの解決策を見つけました:
まず、あなたの端末で以下のコマンドラインを試してください。
brew services restart postgresql
何も変わらない場合:
ps aux | grep postgres
それでも何も変わらない場合:
ls -ls | grep post
修正する最後のコマンドで、rootから実行してpostgresロックファイルを削除しました。
rm /usr/local/var/postgres/postmaster.pid
その後 :
brew services restart postgresql
Berziiiiより: https://github.com/ga-wdi-boston/capstone-project/issues/325
それが役立つことを願っています:)
よろしく!
今夜この問題が発生し、しばらく作業していたRailsアプリケーションで作業しました。私の問題は、単純にpostgresqlサーバーが実行されていなかったという事実に帰着しました。
画面の一番上に移動して(Macを使用しています)、小さな象のアイコンをクリックして、[開始]をクリックしました。
サーバーがオンになっていないことを確認します。
これが誰かに簡単な解決策を提供することを願っています。
おそらくコンピュータを再起動してPostgresアプリを起動するのを忘れたのでしょう。
私はこれが遅れていることを知っていますが誰かを助けるかもしれません。私は同じ問題を抱えていました。私は2つのバージョンのpostgres 9.1と9.5を使っていたことがわかりました。私は9.1と9.5をアンインストールし、そして再び9.5をインストールしました。
Postgresアプリを使用しているMacユーザーは、アプリケーションを開くことができます(Postgresをスポットライト検索するか、メニューバーの象のアイコンを見つけます)。そこにあなたはメッセージと共に赤いXを見るかもしれません: "Stale postmaster.pid file"。残念ながら、スポットライト検索ではこのファイルの場所は表示されません。 [サーバー設定]をクリックし、表示されたダイアログボックスで[表示]ボタンをクリックしてデータディレクトリを開きます。フォルダを1つナビゲートし(私にとっては "var-10"でした)、postmaster.pid
ファイルを削除します。
Postgresアプリに戻って[スタート]ボタンをクリックします。その赤いXは、「実行中」というメッセージの付いた緑色のチェックマークに変わります。これでターミナルでRails server
のようなRailsコマンドを正常に実行できるはずです。
私の問題は私の application.yml ファイルにありました。 url
上の私のデータベースheroku
はポート5342を使用していませんでした。あなたのheroku
config var DATABASE_URL
をチェックしてください。該当するデータベースの application.yml に正確に一致するものがあることを確認してください。
私はこのコマンドSudo service postgresql restart
を実行するだけで、すべてがまたうまくいった。
私は同じ問題を抱えていました。 /var/log/postgresql
のPostgreSQL
ログファイルの最後の行をチェックします。ファイル /etc/postgresql/9.5/main/postgresql.conf に認識できない設定パラメータがありました。 postgresql.conf
のエラー行をコメントすることで問題は解決しました。
私を助けたのは間違いなく@Chris Sladeの答えでした。
私は役に立つならそれらの残りのプロセスを殺すために小さなスクリプトを書きました:
kill_postgres() {
if [[ $* -eq "" ]]; then
echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
else
gksudo echo "Granted Sudo"
pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
if [[ $pids -eq "" ]]; then
echo "Nothing to kill"
else
for pid in "${pids[@]}"
do
echo "Killing ${pid}"
Sudo kill $pid
echo "Killed ${pid}"
done
kill_postgres $*
fi
fi
}
私は同じ問題を抱えていた、この説明は私のためにそれを解決した: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/ /
重要なステップは、私の本当の問題が何であるかを私に聞かせてくれた、私の /usr/local/var/postgres/server.log の末尾を見ていたことですPostgreSQLのアップグレード
私は本番環境でも同じ問題を抱えていました(開発はすべてうまくいきました)。私の場合、DBサーバーはアプリと同じマシン上のnotです。
bundle exec rake db:migrate Rails_ENV=production
それからサーバーを再起動すればすべてがうまくいった。
Homebrewパッケージマネージャーには、自動的に起動するlaunchctl plistsが含まれています。詳細については、brew info postgres
を実行してください。
手動で開始:
pg_ctl -D /usr/local/var/postgres start
手動で停止する:
pg_ctl -D /usr/local/var/postgres stop
自動的に開始:
「今すぐpostgresqlを起動してログイン時に再起動するには:」
brew services start postgresql
postmaster.pid
ファイルを削除する必要はありません。これはデータ破損を招く可能性があるためです。
オプション?単にkill
プロセス(kill -9
を使用しないでください。通常のkillで使用できます)。
その後、postgresサーバーを再起動するだけで準備完了です!
これを実現する手順は次のとおりです。
postmaster.pid
ファイルを見つけて開きます(私の場合はMac Sierraにあります)
vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
PIDをコピーします-postmaster.pid
ファイルの最初の行の番号です
kill PID
でプロセスを強制終了します。たとえば、PIDが381の場合、kill 381
を実行しますbrew services start postgresql
を実行します。または、postgresappを使用している場合は、単にstart
ボタンをクリックするだけですRailsサーバーを停止し、rake db:migrate
を実行し、そしてRails s
を起動しました。
私はpostgresを再インストールしなければなりませんでした、ここに概説されている素晴らしい指示: https://medium.com/@zowoodward/effectively-uninstall-and-reinstall-psql-with-homebrew-on-osx-fabbc45c5d9d
次に、postgresユーザーを作成する必要がありました:/usr/local/opt/postgres/bin/createuser -s postgres
このアプローチはすべてのローカルデータを上書きするため、必要に応じてデータをバックアップしてください。
私はpostgresqlが更新されたbrew upgrade
の後にこのエラーに遭遇しました。私はこの素晴らしい記事から自分の問題を修正する方法を正確に見つけました。私はpostgresをバックアップして実行することができ、そして私の既存のデータベースすべてに移行することさえできました。 https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade
私はちょうどこの問題を抱えていたし、提案された解決策のどれも私のために働かなかった。多くのグーグルの後、私は解決策を見つけました。これは私のために働いたものです。
まず、サーバーを起動するためにこのコマンドを実行しなければならず、設定ファイルの場所を設定していると思います。
pg_ctl -D /usr/local/var/postgres start && brew services start postgresql
それから私はpostgresにアクセスするためにこのコマンドを実行しました
psql postgres
そしてpostgresプロンプトで、私は役割をリストするために "\ du"とタイプしました
postgres=# \du
Postgresロールが見つからなかったので、このコマンドで作成しなければなりませんでした
CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;
これで私の問題は解決しました。これが他の人に役立つことを願っています。