[pgsql-jp: 34808] PostgreSQL 8.0 のロケールの扱い

OKINAKA Kenshin okinaka @ chance.com
2005年 2月 3日 (木) 12:43:23 JST


沖中と申します。

PostgreSQL 8.0 のロケールの扱いについて質問があります。

7.3 では、initdb の際に --no-locale を指定しないと日本語の比較が
正常に動作しないなどの問題がありました。

8.0 でも --no-locale を指定したところ別の問題が発生しました。
マルチバイトを含む TEXT 型の項目に対して psql コマンドなどで
lower 関数を使うと

ERROR: invalid multibyte character for locale
HINT: The server's LC_CTYPE locale is probably incompatible with the database encoding.

などとエラーになってしまいました。

# 本来は、半角文字のみの項目なのですが、旧バージョンで運用しているときに
# 誤ってマルチバイト文字が混入していたようです。

そこで、メッセージにしたがって

initdb --locale=ja_JP.eucJP -E EUC-JP

としたところエラーがでなくなりました。日本語の比較も問題なさそうです。

PostgreSQL 8.0 では、この設定で正しいでしょうか?
いままでと違うのでちょっと不安があります。
もし何か問題があれば教えてください。

確認した環境は、
RedHat Enterprise Linux 3.0 + PostgreSQL 8.0
です。

以上、よろしくお願いします。

-- 
  株式会社チャンスイット システム制作部
  沖中研心 <okinaka @ chance.com>




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