メッセージ

2010年10月24日の記事

2010/10/24(日)postgreSQL にて、initdb時と違う文字コードで DB 生成

2017/10/12 4:10 サーバ運営・管理
最新の postgreSQL は、 9.0。
しかし、当方では検証を終えていないので、8.4.x を使用しています。

UTF-8 なDBを作成しようと、
createdb -U hoge -E utf-8 exampledb

としたところ、
createdb: database creation failed:
ERROR: new encoding (UTF8) is incompatible with the encoding of
the template database (EUC_JP)
HINT: Use the same encoding as in the template database,
or use template0 as template.

※見やすいように適当に改行しています。
 実際の表示体裁は、画面幅一杯で折り返して表示します。

という、横文字エラーメッセージ出て作成できません。
散々既出のようですが、メモ代わりということで。。
横文字は解読が苦手orz だが、いろいろサイトを訪ねあたってみると、どうも、template0 を使って生成しろ、ということらしい。。

当方では、initdb (サーバに初期化データベースをインストール)時に、文字コードを EUC-JP にしました。こんな感じ:
initdb -D /db --encoding=EUC_JP --locale=C

この場合、EUC-JP 以外の文字コードでDBを生成する時はこうしないといけないようです。
createdb -U hoge -E utf-8 -T template0 exampledb

これで何事も無かったかのように UTF-8 なDBが生成できました。
何でこんなことになったのかは、知りません。orz