Postgres 9.2.2(9.1.4から)にアップグレードしています。以下を使用してDBをアップグレードしようとすると:
pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres
次のエラーメッセージが表示されます。
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories ok
There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting
サーバーを停止しようとしましたが、アップグレードコマンドが機能しません。古いポストマスターをシャットダウンする方法は?
postmaster.pid
は、以前のバージョンのusr/local/var
フォルダー内にある必要があります。このファイルの名前を変更するだけで問題が解決するはずです。
OS X Yosemiteで、Homebrewを介してPostgreSQLをインストールした後:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
ほとんどのUNIXシステムでは、/etc/init.d
に初期化スクリプトがあり、UNIXサービスの開始、再起動、再読み込み、または停止に使用できます。
例えば.
Sudo /etc/init.d/postgresql stop
これが利用できない場合は、pg_ctl stop
を使用できます
例えば.
su - postgres
bash-3.1$ pg_ctl stop # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop
pg_ctl
の詳細
http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html
[〜#〜] edit [〜#〜]それでもエラーが発生し、postmasterが実行されていないことが確かな場合(Sudo ps aux | grep "postmaster"
-1行だけを返す必要があります)クリーンシャットダウン後もpidファイルが残っています
Pidfileを削除します。
> Sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
Ubuntuでは、アップグレードを実行する前にPostgreSQLサービスを停止します。これにより、インストールされているバージョンに関係なく、postgresのすべてのインスタンスが停止します。
service postgresql stop