[pgsql-jp: 29377] postgresで日本語入力

Nishimura Takumi nishimura @ smat.jp
2003年 3月 12日 (水) 12:59:52 JST


沖中さま。
ご忠告ありがとうございます。

大場さま、加藤さまの
ご意見も加味して
改めて書き直したいと思います。


環境は、

TurboLinux    6.5
Linuxkernel      2.2.18-13
PostgreSQL       7.0.2-4

です。

postgreSQLを動作させはじめて、
約1年が経過しております。
バージョンとしてはとても古いものです。

1ヶ月ほど前から登録、修正時に
データベースに書き込みに失敗したと言うエラーが表示され、
登録が出来なくなってしまいました。

そのときのエラーは
「Cannot insert a duplicate key into unique index XXX_key 」
と表示されました。


クエリーを送るまでの手順としては、
Teratermを使ってTELNETでログインし、psql(-n 付き)を立ち上げて、
クエリーを実行しております。
Teratermの文字コードは両方ともEUC-JPです。

--補足--
※postgreSQLはEUCコードだったと思っておりますので、
 psqlの日本語の使用のための-n
 Teratermの文字コード、EUC-JP
 としております。

※TELNETの危険性は承知しております。
 普段はsshを使ったアクセス方法を使用しております。
 現在、登録エラーが発生したため原因追及のために一時的にポートを空けて
 アクセスしております。
 サーバが手元には無いもので、アクセス方法が限られているのです。
 大場さま。ご心配ありがとうございます。
--補足--


エラーに表記される、
XXXの内容を変えて試してみることにしました。
もちろん、登録に試した文字列に重複がないようにテーブルを参照して行いました。

そこでわかったことは、
XXXの内容が、全て全角文字のとき、
「Cannot insert a duplicate key into unique index XXX_key 」

XXXの内容が、全角文字のどこかに半角文字1文字以上
だと、正常に登録されることがわかりました。

ちなみに、エラーが起こっているフィールド、
「XXX」は、
「varchar(20)」で「not null」
の設定になっております。

そこでなぜ、日本語だけのとき登録が出来ないのか調べているのですが、
これという原因がつかめないのが現状です。


原因を調べているのですが、サーバの設定の変更は一切出来ないため、
参照して今の設定を確認することしか出来ません。

もしサーバの設定が原因で、この現象が起こっているならば、
サーバが原因であると言う明確な理由を提示する必要があるのです。

しかし、今のところ、明確な理由にはたどり着けておりません。
たしかに、サーバが悪いのではないかと疑って調べている自分がいるため、
他の部分に目を向けられていないのかも知れません。


そこで、日本語が登録できなかった経験がある方や、
似たような事象を経験されたことのある方が、
もしいましたら、知識を分けていただけないかと思っております。

また、読まれた方でも、これはどうなんだなど、
気が付いたことがある方でも何か解決の糸口をいただければと思っております。

MLを見ている方にとても甘えてしまっているのもわかっておりますが、
どうぞよろしくお願いいたします。






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