psql -n hogedb とコマンド叩いて psql(PostgreSQL のターミナル型フロントエンド)を立ち上げ、
INSERT
INTO
t_address
VALUES (
'1',
'742-0301',
'岩国市周東町祖生',
'2010-01-08 17:40:46'::timestamp
);
という SQL を実行しても、SELECT してみると、
hogedb=# SELECT * FROM t_address uid | post | address | cdate -----+----------+----------------------------+------------------------ 1 | 742-0301 | | 2010-01-08 17:40:46 (1 rows)
という具合に住所が表示されない。
エラーは出てないので、登録されているはずだがなあ・・・
DB の Encoding は EUC_JP。
PuTTY の文字コードの設定が UTF-8/Auto-Detect Japanese になっていたので、EUC-JP に変えてみたが駄目。
Perl でちょいプロを作って、DBI/DBD 経由で書き込んでみたが同じ状況。エラーは出ないのだが、psql で該当テーブルを見てみると、日本語が表示されない。
今度は、SELECT する「ちょいプロ」作って確認してみよ・・・とプログラムを書きだしたところで、ハっと思いついて pg_dump hogedb > hogedb.txt と DB 内容のダンプを出力してみた。
そしたら、
-- -- Data for Name: t_address; Type: TABLE DATA; Schema: public; Owner: xxxxxx -- COPY t_address (uid, post, address, cdate) FROM stdin; 1 742-0301 岩国市周東町祖生 2010-01-08 17:40:46
という具合にしっかり日本語部分も登録されているのが確認できた。
psql が日本語を表示してないだけか!?
う~ん、何でじゃろうね。
psql って、ページャーは more を使ってるんだったっけ?
なにせ、PostgreSQL 8.4.2 と CentOS 5.4 の組み合わせが初めてなのと、ここ数年、そういやあ新規開発案件は MySQL ばかりで、psql を使ってあれこれというケースもあまりなかったよ。
だから知らないのだが、最近の psql はこうなのか?
昔、psql が日本語対応してなかった時も、全然表示しないということはなかったからなあ。文字化けするだけで。
ま、取りあえず psql 使ってする作業は終わったので、これ以上原因は追及しないが、またも無駄な時間を過ごしてしまった。(^^;