- PR -

Cygwinを使用してPostgreSQLの設定につきまして

投稿者投稿内容
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-05-03 14:20
.
.
.

DEFPOSTOPTS=$PGDATA/postmaster.opts.default
POSTOPTSFILE=$PGDATA/postmaster.opts
PIDFILE=$PGDATA/postmaster.pid
.
.
.

if [ "$op" = "start" -o "$op" = "restart" ];then
oldpid=""
if [ -f "$PIDFILE" ];then
echo "$CMDNAME: Another postmaster may be running. Trying to start postmaster anyway." 1>&2
oldpid=`sed -n 1p $PIDFILE`
fi
.
.
.

pg_ctl の中身はこんなシェルですから。
$PIDFILE とは先ず何を指すか、辿っていけば原因が postmaster.pid やとわかりますな。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-05-03 14:33
引用:

koji_kojiさんの書き込み (2004-05-03 11:22) より:

2を実行した場合、
pg_ctl: Another postmaster may be running. Trying to start postmaster anyway.
pg_ctl: cannot start postmaster
Examine the log output.
と表示されてしまうのですが、どうすれば正常に動かすことができるのでしょうか?



エラーメッセージを訳すと:

他のpostmasterが稼働しているかも知れません。とにかくpostmasterの起動を試みます。
postmasterを起動できませんでした。
ログ出力を調べてください。

ということです。なので、まずはログを調べるべきです。
で、たぶん次のようになっているはずです。

FATAL: pre-existing shared memory block (key 5432001, ID 5888) is still in use
HINT: If you're sure there are no old server processes still running, remove the shared memory block with the command "ipcrm", or just delete the file "/usr/share/pgsql/data/postmaster.pid".

これを訳すと:

致命的なエラー:
すでに存在する共有メモリブロック (key 5432001, ID 5888) がまだ使用中です。
ヒント:
もし、古いサーバプロセスが稼働していないと確信できるなら、
共有メモリブロックをipcrmコマンドで削除、または
"/usr/share/pgsql/data/postmaster.pid" ファイルを消去してください。


なので、ipcrmコマンドで該当の共有メモリブロックを消去するか、
"/usr/share/pgsql/data/postmaster.pid" ファイルを消せばよいでしょう。


なお、PostgreSQLを止めるには、
pg_ctl stop を使うか、
postmasterに対して、SIGTERM, SIGINT (=ctrl-C), SIGQUITを発行します。

マニュアルの該当個所はこちら。
pg_ctl
http://www.postgresql.jp/document/pg74doc/html/app-pg-ctl.html

postmaster
http://www.postgresql.jp/document/pg74doc/html/app-postmaster.html

サーバーのシャットダウン
http://www.postgresql.jp/document/pg74doc/html/postmaster-shutdown.html


もし他に疑問点が出たら次のページも参考になるでしょう。

PostgreSQL FAQ in Japanese
http://www.postgresql.jp/subcommittee/jpugdoc/faq-japanese.html

また、CygwinのPostgreSQLパッケージに特有の事項は次のファイルも参照して
見てください。
/usr/share/doc/Cygwin/postgresql-7.4.README
koji_koji
会議室デビュー日: 2004/05/02
投稿数: 16
投稿日時: 2004-05-03 15:36
コブラさん、ちいにぃさん、アドバイスありがとうございます。
pidファイルを一旦削除してから、再度コマンドを入力しましたら
上手く実行されました。

もう少し色々調べながらポスグレを使って行きたいと思います。

大変参考になりました。
ありがとうございました。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-05-03 15:39
うまくいって良かったですね。
ところで、koji_kojiさんに1つ質問があります。

引用:

koji_kojiさんの書き込み (2004-05-02 16:46) より:

現在ある書籍を用いてWebアプリの学習を行なっておりますが、



CygwinのPostgreSQLについて書かれている書籍は少ないと思うので、
この書籍について次のことを知りたいのですが、よろしいでしょうか?

・この「書籍」の名前
・この書籍で CygwinのPostgreSQLについて触れている個所があるかどうか
・この書籍で、Cygwinのipc-daemon2について触れている個所があるかどうか

というのも、Cygwinのipc-daemon2 はたぶん Cygwin 1.5.X に登場したもので、
2003年7月以後に使われているもの思います。(それまでは別途CygUtilsを
ダウンロードし、そのなかのipc-daemonを使った)
このことが書かれている書籍やWebは少ないはずですので気になっています。

例えば以下の既存の書籍では、発売時期から見てもipc-daemon2のことは
記されていないと思いますので。
・CygwinでPostgreSQLをWindowsで使う本 (2003.07発行)
・WindowsユーザのためのPostgreSQL導入活用ガイド(2002.11発行)

[修正:誤字修正]

[ メッセージ編集済み 編集者: ちいにぃ 編集日時 2004-05-03 15:50 ]
koji_koji
会議室デビュー日: 2004/05/02
投稿数: 16
投稿日時: 2004-05-03 15:56
ちいにぃさん、色々とありがとうございます。
書籍名:Java WORLD for Beginners
出版社:IDG
価格 :\1,680
です。

実際に
CygwinのPostgreSQLとCygwinのipc-daemon2について
触れている箇所は、ほとんどないと思います。

P.038にWebアプリ開発の環境設定の箇所で
『データベース環境のセットアップ』と題して、
1ページだけ以下の手順で、記載されています。
・CygwinとPostgreSQLのインストール
・Cygpicの起動
・DBの作成
・PostgreSQLの起動/終了方法
これくらいしか掲載されていないような感じです。

また、先の章で『JDBCによるデータベース・アクセス』にて
JDBCの使用方法とSQL文を用いたデータ取得の仕方が掲載されているだけです。

因みに、CygwinとCygpicとPostgreSQLは、本書付録のCDから取得しました。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-05-03 20:35
引用:

koji_kojiさんの書き込み (2004-05-03 15:56) より:

書籍名:Java WORLD for Beginners
出版社:IDG
価格 :1,680



http://direct.idg.co.jp/detail_1.msp?id=1033&class=10005&n=2
の、[特集2]7日間でマスターする! Webアプリケーション開発のキホン
かな?

なるほど、雑誌やムックならipc-daemon2について書かれているんですね。
ありがとうございました。参考になりました。
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-06-12 16:24
Cygwin版のpostgreql-7.4.2-1パッケージが 2004/06/11 に出ましたので、
注意点を書いておきます。

設定手順はこれまでどおり、postgresqlパッケージの /usr/share/doc/Cygwin/postgresql-X.X.X.README に記載されています。
(今回のファイル名は postgresql-7.4.2.README)

このバージョンでは、cygipc (ipc-daemon2) は使えません。
かわりに、cygwinパッケージに入っている cygserver を使います。

cygserverをpostgresqlに使わせるには、環境変数CYGWINに'server'って単語を
追加する必要があります。postgresqlをサービスとして動作させるなら、
システム環境変数で定義しておくと良いでしょう。

スキルアップ/キャリアアップ(JOB@IT)