プロが教える店舗&オフィスのセキュリティ対策術

自分のPC(XP)からTelnetで
LINUX(Red Hat Linux release 9 (Shrike))に接続して、
PostgreSQLを使いたいと思っています。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=944720
の方で「PostgreSQLが接続出来ない」という
質問をさせて頂いた者です。
PATHを通したので以前のようなエラーはなくなりました。

ただ今度は次のようなエラーが出てします。
$ postmaster
FATAL: XX000: failed to initialize lc_messages to ""
LOCATION: InitializeGUCOptions, guc.c:1866

また、initdbをすると、
$ initdb
initdb: no data directory specified
You must identify the directory where the data for this database system
will reside. Do this with either the invocation option -D or the
environment variable PGDATA.
というエラーが出てします。

自分なりに色々とやってみたのですが
どうしても分かりません。
ご教授して頂けたら幸いです。

A 回答 (3件)

うぉお!!!


> $ LANG=C initdb -D /home/postgres/bin
すっげ~名前!!!(驚愕・唖然 (^^;))

bin ですか・・・
別に名前はなんでもいいといればいいんですが
普通 bin は実行ファイルを保存するフォルダ名に
使われるので、今後のために避けた方がよろしいかと。

/home/postgres/data/
あたりをされた方がよろしいかと思います。

> ただ、ディレクトリーは毎回指定しないと
> いけないのでしょうか?

No1 の回答で答えていますが、再掲。
> initdb -D /home/postgres/data
> のように D オプションで指定せねばなりません。
>(環境変数 PGDATA に設定してしまう手もあります)

ユーザ postgres の .bashrc にて
PGDATA=/home/postgres/data
みたいにしておけばいいです。
    • good
    • 0
この回答へのお礼

ご返事有り難うございました。

>/home/postgres/data/
>あたりをされた方がよろしいかと思います。
ハイ、そうします。

何から何まで教えて頂き
大変に勉強になりました。

有り難うございました。

お礼日時:2004/08/05 16:49

> initdb: directory "/home/postgres" exists


> but is not empty

「/home/postgres というフォルダが存在し
空ではない」とエラーが出ています。

> あなたが扱うデータベースの保存場所を
> 指定しなくてはなりません。どこか分かりますか?
> /home/postgres とか /usr/local/pgsql/data とか
> ちょっとそのマシンの管理者じゃないと、僕らでは
> どこに設定されているのか分からないんですが・・・

同じことを述べさせて頂きますが、どこにデータベースを
保存すればよろしいのでしょう?
ほんとに /home/postgres なのですか?

この回答への補足

ご返事有り難うございました。

>同じことを述べさせて頂きますが、どこにデータベースを
>保存すればよろしいのでしょう?
>ほんとに /home/postgres なのですか?
これも基本的な質問で大変に恐縮ですが、
自由には保存することが出来ないのでしょうか?
LINUXマシンはPostgreSQLをインストールをしただけで、環境設定等はしていません。
もしも宜しければ
どのように設定すればよいか
ご教授して頂けたら幸いです。

補足日時:2004/08/05 13:09
    • good
    • 0
この回答へのお礼

何度もすいません。
$ LANG=C initdb -D /home/postgres/bin
と、指定してみたところ、
Success. You can now start the database server using:
と、起動することが出来ました。
有り難うございました。
ただ、ディレクトリーは毎回指定しないといけないのでしょうか?

お礼日時:2004/08/05 13:28

まず2つの問題があります。


わかりやすい方から(汗)

■ initdb: no data directory specified
あなたが扱うデータベースの保存場所を
指定しなくてはなりません。どこか分かりますか?
/home/postgres とか /usr/local/pgsql/data とか
ちょっとそのマシンの管理者じゃないと、僕らでは
どこに設定されているのか分からないんですが・・・

仮に、その場所が分かりましたら、例えばそれが
/home/postgres/data とすると

initdb -D /home/postgres/data
のように D オプションで指定せねばなりません。
(環境変数 PGDATA に設定してしまう手もあります)

■ LOCATION: InitializeGUCOptions, guc.c

これは、僕からすると珍しいエラーですねぇ
Web で調べたところ、PostgreSQL のエラー表示の
言語設定にからむようです(謎)
Lang 設定して、乗り越えたという記事を複数みつけ
ましたので・・・

LANG=C initdb -D /home/postgres/data
のように、initdb の前に LANG=C を追加すれば
いいのかもしれません。

-----
基本的なことで恐縮ですが、initdb や postgres コマンド
を使うとき、ログインしているアカウントはなんでしょう?

postgres を起動させる時は通常、postgres 専用の
ユーザになることが求められます。

su - postgres

のような su コマンドを initdb などする前に
入力していますでしょうか?

# 前の質問を見て疑問に思ったのですが
# その Linux マシンでは、あなたが手動で
# PostgreSQL を起動させる必要があるのですね(確認)

この回答への補足

こんにちは。
色々と詳しく回答して頂きまして有り難うございました。

>exitのような su コマンドを initdb などする前に
>入力していますでしょうか?
ハイ、ユーザはPostgresにしています。

># 前の質問を見て疑問に思ったのですが
># その Linux マシンでは、あなたが手動で
># PostgreSQL を起動させる必要があるのですね(確認)
超基本的な質問で大変に恐縮ですが
この辺りが分かりません。
LINUXマシンで設定しなければいけないことがあるんですか?
すいませんが、ご指導をして頂ければと思います。

教えて頂いたようにしましたら
次のようなエラーが起こりました。
[postgres@localhost postgres]$ LANG=C initdb -D /home/postgres
-------エラー
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale C.

initdb: directory "/home/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/home/postgres" or run initdb with an argument other than
"/home/postgres".

何度も申し訳ありませんが
よろしくお願いします。

補足日時:2004/08/05 11:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!