俺だけのために Ore! Tips!

PostgreSQL が LANG=C でないと起動しない問題

2005年 3月27日 作業


PostgreSQL のスーパーユーザー postgres の LANG を、psql で日本語を扱うために ja_JP.EUC にしていた。
実は、こうすると postgres ユーザーでうまく postmaster が起動しない。

zakuro# su - postgres
%pg_ctl start
postmaster successfully started
%FATAL:  XX000: failed to initialize lc_messages to ""
LOCATION:  InitializeGUCOptions, guc.c:1866

successfully started とか出てるけど、実際には起動してない。(つーか、起動してすぐに落ちてる?)
何か、メッセージ出力の関係かなんかで、LANG=C でないと postmaster は起動しないのだ・・・という記述をWeb上で見つけたので、LANG=C の設定をして改めて起動を試みる。

%setenv | grep LANG
LANG=ja_JP.EUC

今は ja_JP.EUC を指定している。

%setenv LANG C
%setenv|grep LANG
LANG=C
%pg_ctl start
postmaster successfully started
%LOG:  database system was shut down at 2005-03-27 01:23:37 JST
LOG:  checkpoint record is at 0/15529E60
LOG:  redo record is at 0/15529E60; undo record is at 0/0; shutdown TRUE
LOG:  next transaction ID: 182767; next OID: 167927
LOG:  database system is ready

%ps -aux|grep post
root     14380  0.0  0.6  1636 1136  p4  I    Thu11PM   0:00.14 su - postgres
postgres 14381  0.0  0.9  2256 1624  p4  S    Thu11PM   0:00.24 -su (csh)
postgres 22509  0.5  1.7 13500 2976  p4  S     1:32AM   0:00.16 /usr/local/pgsql/bin/postmaster (postgr
postgres 22511  0.0  1.6  5248 2884  p4  S     1:32AM   0:00.02 postmaster: stats buffer process    (po
postgres 22512  0.0  1.6  4288 2900  p4  S     1:32AM   0:00.02 postmaster: stats collector process
postgres 22514  0.0  0.4  1396  772  p4  R+    1:32AM   0:00.03 ps -aux
postgres 22515  0.0  0.3  1376  624  p4  R+    1:32AM   0:00.02 grep post

おお、マジでこれで起動した。
LANG 設定くらいで起動を左右されるとは・・・。細かいところを気にしすぎ!!PostgreSQL め!!(笑)

起動してしまえばこっちのものなので、再度、LANG を EUC に戻す。

%source .cshrc
%setenv | grep LANG
LANG=ja_JP.EUC
%psql -n hirizen
Welcome to psql 7.4.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

hirizen=# select * from m_yukue;
 hou_id |        houmen        |        cdate        |        udate
--------+----------------------+---------------------+---------------------
 10     | 十日市町             | 2005-03-11 00:00:00 | 2005-03-11 00:00:00
 11     | 広島港               | 2005-03-11 00:00:00 | 2005-03-11 00:00:00
(2 rows)

hirizen=# INSERT INTO m_yukue (hou_id, houmen, cdate, udate) VALUES ('12','西広島','2005-03-27 01:44:00'::timestamp,'2005-03-27 01:44:00'::timestamp);
INSERT 167927 1
hirizen=# select * from m_yukue;
 hou_id |        houmen        |        cdate        |        udate
--------+----------------------+---------------------+---------------------
 10     | 十日市町             | 2005-03-11 00:00:00 | 2005-03-11 00:00:00
 11     | 広島港               | 2005-03-11 00:00:00 | 2005-03-11 00:00:00
 12     | 西広島               | 2005-03-27 01:44:00 | 2005-03-27 01:44:00
(3 rows)

hirizen=# \q
%

ちゃんと日本語も INSERT 出来たので、これでいいのだ。

前ページに戻る


Copyright (C) 2004 S.Maaasamasa.