2013年12月17日火曜日

Debian wheezy :postgresql (9.1) で EUC-JP エンコードのデータベースを作成

debianのパッケージ postgresql-9.1 (9.1.11-0wheezy1) を通常インストールした状態で、
EUC-JPエンコードのデータベースを作成しようとしたら、

$ createdb -E EUC_JP -T template0 MyDB
createdb: データベースの生成に失敗しました:ERROR:  符号化方式 EUC_JP がロケール ja_JP.UTF-8 に合いません
DETAIL:  選択された LC_CTYPE を設定するには、符号化方式 UTF8 である必要があります。

という結果に。

$ createdb -E EUC_JP -l C -T template0 MyDB

とすれば、とりあえずデータベースを作成できるが、
ソート順が辞書順にならないなど、日本語関係の処理に違和感があるかもしれない。
その場合は、EUC-JP用の日本語ロケール(ja_JP.eucjp)を用意すればよいらしい。
具体的には、

$ locale -a

で、ja_JP.eucjpロケールがないのを確認し、

$ sudo vi /etc/locale.gen

で、ja_JP.EUC-JP EUC-JP の行をアンコメントし、

$  sudo locale-gen

で、ja_JP.eucjpロケールを追加し、

$ locale -a

で、ja_JP.eucjpロケールを用意できたのを確認し、

$ createdb -E EUC_JP -l ja_JP.eucjp -T template0 MyDB

で、データベースを作成できた。

[参考]
Ubuntuでja_JP.EUC-JPを使用する - World Wide Wonderful
http://d.hatena.ne.jp/orangehat/20090421

ロケール(国際化と地域化) — Let's Postgres
http://lets.postgresql.jp/documents/technical/text-processing/2/