2011年9月16日金曜日

PostgreSQL 8.4 デフォルトのエンコード

PostgreSQL 8.4からロケール周りの変更で、initdb時に指定したエンコード以外でcreatedb仕様とするとエラーになるようだ。

# createdb -E UTF8 uft8db
→エラー

今まで何台かのサーバでやってたけど気づかなかった。
redhat EL4のPostgreSQLだとinitdb時のエンコードがSQL_ASCIIなのか?
プロバイダ提供のインストーラがこけたのでyumで入れなおしたからか?

HINTにtemplateと同じ文字コードを使うか、template0をテンプレートとして使う、とあります。
文字コードはutf-8にしたいので以下のようにして作成。

# createdb -E UTF8 uft8db -T template0

-T template0でなにか問題起こったりすることはあるのだろうか?
問題があったら追記しよう。