2011-11-02 22 views
64

私のPostgreSQLサーバが動作しているかどうかを確認する方法はありますか?PostgreSQLサーバの状態を確認する方法Mac OS X

私はこのメッセージを取得しています:

[~/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 
+1

また、Mac OS/X上の複数のバージョンのpostgresを調べる必要があります。 homebrew経由でpostgresをインストールした場合、あなたのパスが正しく設定されていないと、上記のエラーが出る可能性があります。私は誤って自分のパスを見落としてしまい、パススルーを調整するまで、 brew install –

答えて

62

に、実行中のプロセスをチェックする最も簡単な方法:

ps auxwww | grep postgres 

そして、この(バージョンが8.3ではないかもしれない)のようなものに見えるのコマンドを探します。それは場所によって異なり

/Library/PostgreSQL/8.3/bin/pg_ctl start -D /Library/PostgreSQL/8.3/data -l postgres.log 
+0

を使用してください。そういうものが見つからない場合、どうすればサーバーを起動できますか? – Ramy

+0

@Ramy編集の回答を参照 – Bohemian

+1

'pgrep postgres'も動作します。または 'ps auxwww | grep [p] ostgres'を実行して、 'grep'がピックアップしないようにします。 –

8

:このような何かを実行し、サーバーを起動するには

/Library/PostgreSQL/8.3/bin/postgres -D /Library/PostgreSQL/8.3/data 

をあなたのpostgresqlサーバがインストールされています。 pg_ctlを使用して、以下のようにサーバーを手動で起動します。

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 
+0

私の質問を参照してください。 – Ramy

+0

@Ramyパスの* var *の代わりに* bin *を使用しました。 – jamesallman

+0

hmmm ... ok。私は私のインストールがどこにあるかを確認する必要があると思った。新しいアップデートをご覧ください。 – Ramy

13

おそらくinit 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のような良いものを使うなら!トラフィックをブロックするように設定されていると、ページにデータベースが表示されません。

31

あなたははpostgressが実行されているかどうかを決定するために、次のコマンドを実行することができます:

$ pg_ctl status 

あなたはまた、PGDATA環境変数を設定することをお勧めします。必要があります

$ . ~/.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' 

そうのようにそれを調達することを忘れないでください:

は、ここで私はpostgresのための私の~/.bashrcファイルに持っているものです

$ show-pg-status 
pg_ctl: server is running (PID: 11030) 
/usr/local/Cellar/postgresql/9.2.4/bin/postgres 
+0

エラーメッセージが表示されたら、SamGoodyのinitdbコマンドを実行するように促すと、「接続が拒否されました」という問題が修正されます。一度それが修正されたら、私の提案をあなたのPostgresのDBサーバーのステータスを得るために試してみてください。 – l3x

+0

うわー....私は何年もポストグルを再構築してきた。これは完璧な解決策です! – mindtonic

4

pg_ctl statusコマンドsugges他の回答では、ポストマスタープロセスが存在するかどうかを確認し、それが実行されていると報告しているかどうかをチェックします。これは必ずしも接続を受け入れるか、クエリを実行する準備ができているということを意味しません。

psqlのような別の方法を使用して、簡単なクエリを実行し、終了コードを確認することをお勧めします。 psql -c 'SELECT 1'、またはpg_isreadyto check the connection statusを使用してください。

+2

'psql -c" SELECT 1 "-d {dbname}>/dev/null || postgres -D/usr/local/var/postgres> postgres.log 2>&1& 'ポストグルを一度にチェックして起動したい場合(オートメーションスクリプトに便利です)。 – Kate

6

PostgreSQL 9.3では、コマンドpg_isreadyを使用してPostgreSQLサーバの接続状態を確認できます。 docsから

サーバが正常に接続を受け入れている場合、シェルに0を返すpg_isready

、1サーバが(起動時など)の接続を拒否された場合、2への応答がなかった場合は(例えば、無効なパラメータのために)試行が行われなかった場合は3になります。

関連する問題