Windows版のPostgreSQL 9.1での経験です。
photo credit: Itkovian via photopin cc
ことの起こり
あるシステムで動作しているデータベースを元にして、テスト環境を構築したくなりました。
そのデータベースは、EUC_JPにエンコーディングするように指定して作成されていたので、開発用の環境で同じエンコーディングを指定して作成しようとしたら、エラーになりました。
調べて対処
PgAdmin IIIの右クリックメニューでのエラーから、どう対処すればいいのかわからなかったので、SQLエディタから
CREATE DATABASE dbname WITH OWNER = postgres ENCODING = 'EUC_JP' TABLESPACE = pg_default LC_COLLATE = 'C' LC_CTYPE = 'C' CONNECTION LIMIT = -1;
としたら、テンプレートにtemplate0を指定すればいいということがわかりました。
テンプレートの指定方法を調べた結果、
CREATE DATABASE dbname WITH OWNER = postgres ENCODING = 'EUC_JP' TABLESPACE = pg_default LC_COLLATE = 'C' LC_CTYPE = 'C' CONNECTION LIMIT = -1 TEMPLATE = template0;
を実行したら、EUC_JPにエンコーディングするように指定して作成できました。
どのバージョンから、このような設定になったのかまでは調べていませんが、過去作成したシステムのデータベースを新しい環境に移行する場合、このような指定が必要そうです。