Postgresqlサーバーが実行中かどうかを確認するにはどうすればよいですか?
私はこのメッセージを受け取っています:
[~/dev/working/sw] Sudo bundle exec rake db:migrate
rake aborted!
could not connect to server: Connection refused
Is the server running on Host "localhost" and accepting
TCP/IP connections on port 5432?
更新:
> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory
アップデート2:
>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
実行中のプロセスをチェックする最も簡単な方法:
ps auxwww | grep postgres
次のようなコマンドを探します(バージョンは8.3ではない場合があります)。
/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data
サーバーを起動するには、次のように実行します。
/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log
次のコマンドを実行して、postgressが実行されているかどうかを確認できます。
$ pg_ctl status
PGDATA
環境変数も設定する必要があります。
Postgresの~/.bashrc
ファイルには次のものがあります。
export PGDATA='/usr/local/var/postgres'
export PGHOST=localhost
alias start-pg='pg_ctl -l $PGDATA/server.log start'
alias stop-pg='pg_ctl stop -m fast'
alias show-pg-status='pg_ctl status'
alias restart-pg='pg_ctl reload'
それらを有効にするには、次のようにソースすることを忘れないでください:
$ . ~/.bashrc
今、それを試してみると、次のようなものが得られるはずです。
$ show-pg-status
pg_ctl: server is running (PID: 11030)
/usr/local/Cellar/postgresql/9.2.4/bin/postgres
おそらくpostgresを初期化していないでしょう。
HomeBrewを使用してインストールした場合、他の何かが使用可能になる前にinitを実行する必要があります。
手順を確認するには、brew info postgres
を実行します
# Create/Upgrade a Database
If this is your first install, create a database with:
initdb /usr/local/var/postgres -E utf8
To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
それを実行すると、次のようなメッセージが表示されます。
成功。これで、次を使用してデータベースサーバーを起動できます。
postgres -D /usr/local/var/postgres or pg_ctl -D /usr/local/var/postgres -l logfile start
それでも問題が解決しない場合は、ファイアウォールを確認してください。 HandsOffのような良いものを使用する場合!トラフィックをブロックするように構成されている場合、ページにはデータベースが表示されません。
PostgreSQL 9.3では、コマンドpg_isready
を使用して、PostgreSQLサーバーの接続ステータスを確認できます。
docs から:
pg_isreadyは、サーバーが正常に接続を受け入れている場合はシェルに0を返し、サーバーが接続を拒否している場合(起動時など)1、接続試行への応答がなかった場合2無効なパラメータへ)。
Postgresqlサーバーがインストールされている場所によって異なります。 pg_ctlを使用して、以下のようにサーバーを手動で起動します。
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
他の回答で提案されているpg_ctl status
コマンドは、postmasterプロセスが存在することを確認し、存在する場合は実行中であることを報告します。これは、必ずしも接続を受け入れたりクエリを実行したりする準備ができていることを意味しません。
psql
を使用して簡単なクエリを実行し、終了コードを確認するなど、別の方法を使用することをお勧めします。 psql -c 'SELECT 1'
、またはpg_isready
接続ステータスを確認するために を使用します。