[pgsql-jp: 26933] Re: postmasterをdaemontool から起動していますが、「createdb」ができません。

Shuhei Tomita tomita @ zingy.or.jp
2002年 8月 6日 (火) 18:31:47 JST


冨田と申します。

> 現在、以下の環境でpostgresqlを使用しています。
> 
> [環境]
> OS : FreeBSD4.4
> Postgresql : postgresql-7.2.1
> daemontool : daemontool-0.70

ぉぉ、奇特にもかなり近い環境の方がいらっしゃるとは。
ちょうど近い環境がありますので試してみました。

OS : FreeBSD 4.4-Release
Postgresql : postgresql-7.1.3
daemontool : daemontool-0.70

> /var/service/pgsql/runには以下のように設定しています。
> ----------------------------------------------------------------
> #!/bin/sh
> exec env - PATH="/usr/local/pgsql/bin:/usr/local/bin:/usr/bin:/usr/sbin" \
> PGDATESTYLE=ISO \
> setuidgid postgres \
> postmaster -i -D /usr/local/pgsql/data -p 5432
> ----------------------------------------------------------------

確かに、このrunスクリプトで起動してcreatedbしてみると、私の環境でも全く
同じエラーになります。

> NOTICE:  database directory '/usr/local/pgsql/data/base/1046419' could not
> be removed
> ERROR:  CREATE DATABASE: could not initialize database directory; delete
> failed as well
> createdb: database creation failed

そこで、postmasterの起動オプションにデバッグフラグ(-d 2)を追加して
multilogでログを取ってみると、createdb時のエラーメッセージの舞台裏を見る
ことができました。

| DEBUG:  StartTransactionCommand
| DEBUG:  query: CREATE DATABASE "test"
| DEBUG:  ProcessUtility: CREATE DATABASE "test"
| cp: not found
| rm: not found
| NOTICE:  database directory '/usr/local/pgsql/data/base/18725' could
| not be removed
| ERROR:  CREATE DATABASE: could not initialize database directory;
| delete failed as well
| DEBUG:  AbortCurrentTransaction

どうやら、cpとrmが見つからないと言っているようです。

そこで、runスクリプトの
PATH="/usr/local/pgsql/bin:/usr/local/bin:/usr/bin:/usr/sbin"に、
cpとrmの在処を追加して、
PATH="/usr/local/pgsql/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin"に
すると、createdbできるようになりませんか?

さて、ここで、内部構造に詳しい方にお尋ねしたいのですが、今回のcreatedbが
失敗する際の環境変数は、

1.postmaster起動時の環境変数PATHに/binが含まれない
2.createdb実行時の環境変数PATHに/binが含まれる

という条件でした。ということは、createdbがcpやrmを呼び出しているのではな
く、postmaster(postgres)がcpやrmを呼んでいるんでしょうか?

………………………………………………………………………………………………
		冨田 修平(Shuhei Tomita) tomita @ zingy.or.jp
………………………………………………………………………………………………




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