CentOS5.4にPostgreSQL8.4を構築する機会があり、initdbでencodingをEUC_JPにして構築していた。Redmineを同データベースで運用するため今まで通りデータベース作成コマンドを実行したらエラーが出た。いつもなら大丈夫なのに・・・8.4から仕様が変わったみたい。
$ createdb redmine --owner redmine --encoding=UNICODE
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.
UTF8はテンプレートと互換性がない
ヒント:同じ文字コードにするかテンプレートとしてテンプレート0を使用してください。
と表示された。initdbと異なる値でcreatedbするときは個別にオプション指定しないとダメみたいです。なので以下のようにクリアなテンプレート0データベースを使い解決。
$ createdb redmine --owner redmine --encoding=UNICODE --template=template0
また8.4からデータベースごとにロケールも持てるようになったようです。
こちらに詳しく解説がされています。
※リンク先の「Let's Postgres」ですが非常に優しく書かれていてわかりやすいと思います。今年で開設3年目ということなのでこれから期待できそうですね。
1 件のコメント:
この記事内容を探していました。
とても助かりましたm(_ _)m
コメントを投稿