ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PostgreSQLにおいて、エンコードにEUC_JPを指定してデータベースを作成する方法

Windows版のPostgreSQL 9.1での経験です。

f:id:AJYA:20130125220354j:plain

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にエンコーディングするように指定して作成できました。

 

どのバージョンから、このような設定になったのかまでは調べていませんが、過去作成したシステムのデータベースを新しい環境に移行する場合、このような指定が必要そうです。