[pgsql-jp: 31313] Re: Postgresスタートについて

Masashi Ohba ohba @ m8.dion.ne.jp
2003年 10月 26日 (日) 13:28:59 JST


大場です。

かなり困ってるようでしたので、メッセージの意訳も含めて
職場と自宅から何通かメールを書いてきたつもりですが
どうも、エラーの内容を理解しない方に思えてきた…

私は「対処法はエラーに書いてあるんだから自分で読んでよ」って
思う方なので、エラーの意訳なんか本当は書きたくないし
トライ&エラーの試行錯誤が勉強には大変有意義なのは分かってますが
それはエラーの内容を理解せずとは別の次元の話であって
エラー理解せずの方に教えるのって際限ないので…
以後、親切な方よろしく


In message "[pgsql-jp: 31309] Re: Postgresスタートについて",
Miyao wrote...

>上記を参考に下記の作業を行いましたが、2つ共動いてくれませんでした。

はじめに言っておきますが、同時に2つを動かそうとしてます。
素の状態では、それはできません。
といっても、バージョン違いなどを動かす必要もあるので
二重で動かす方法もちゃんとありますが。

>[postgres @ web postgres]$ /usr/local/pgsql/bin/initdb -D
>/usr/local/pgsql/data
>Success. You can now start the database server using:
>
>    /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
>or
>    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile
>start

あのドキュメントは、ソースからインストールして
/usr/local/pgsql/の中で閉じた状態にするものです。
/home/postgres/を使う環境を作りたいなら
それはそれで、差異が生じます。
標準とは違うことをしたい場合は、ご自分でご自分の環境を
正しく把握してから、ご自分の環境に適合した設定で動かす必要があります。

#各自の環境依存なので、他人には想像以上できません


>[postgres @ web postgres]$ /usr/local/pgsql/bin/postmaster -D
>/usr/local/pgsql/data >logfile 2>&1 &
>[1] 1585

バックグラウンドで動いたからプロセス番号の1585を表示して
制御がコンソールかktermあたりに戻ってきてるんだと思いますが。
この状態は動いてるのではないのですか?

なのに

>[postgres @ web postgres]$ /usr/local/pgsql/bin/postmaster -D
>/home/postgres/data -o -i &
>[2] 1586
>[1]   Exit 1                  /usr/local/pgsql/bin/postmaster -D
>/usr/local/pgsql/data >lo
>gfile 2>&1
>止まってしまったので、ここでctrl + C 押下

とすると、素の設定ではpostmasterの2重起動は「できません」ので

1. 2重起動しようとして、最初のが死んだ?>Exitの行
#こういう起動をしたことないのでわかりませんが
#フォアグラウンド側が優先されるのかな?

2. 最後に「&」がついてないですからバックグランドでは動くようにしていない。
#前のメールで書いた通り、制御が戻ってこない状態では?

となってるようですし、

>*[postgres @ web postgres]$ Lock file
>"/home/postgres/data/postmaster.pid" already exists.

「/postmaster.pid" already exists.」なので、/home/postgres/data/以下に
これまでの動かそうとしてた時のpidファイルの残骸が残ってるようです。
ctrl+Cあたりで止めた時に、これが残ったりしないかは分かりませんが
その場合はpsでpostmasterが動いてないのを確認してから
これを削除してください

で、最初のメールから「/home/postgres/」以下に
データ置き場を指定したいようなので、残骸を削除したら

/usr/local/pgsql/bin/postmaster -D /home/postgres/data -o -i &

としたら、もう動くんじゃないですか?

見た感じでは、
「/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &」
で動いてるようですので。


>*Is another postmaster (pid 932) running in "/home/postgres/data"?
>*[2]+  Exit 1                  /usr/local/pgsql/bin/postmaster -D
>/home/postgres/data -o -i
>行頭*印3行は自動で出てきてしまいます。

出てくるのはいいんですが、内容を理解しないと無意味です。
「pid932の他のpostmasterが "/home/postgres/data"で動いてないかい?」
と聞かれてるわけですから、やらなくちゃならないのは、「確認」です。
psコマンドで確認して、動いてるなら、そのプロセスkillする。
動いてないのにそれが出るなら、残骸を削除する。

>コマンドから下記のようにしたらいいのですか?

ヒントはいっぱい各種メッセージに出てるので
おそらくMLでメール読んでる中の結構な方は
「おそらくこれがおかしくてこうすれば何とかなるだろう」
と分かってきてると思うし、それをメールで送っても
言われた通りにしてるんでしょうけど
言われた通りに「しか」してない部分と
(そこには環境に依存した差異が生じます)
言われたことと「微妙に違うこと」をしてる部分があって…
そういう状態で「下記のように」と言われてもわかりません。

--------------------------------------------------
Name  : 大場正志(Masashi Ohba)
E-mail: ohba @ m8.dion.ne.jp
Add   : Sendai, Japan




pgsql-jp メーリングリストの案内