2010年2月22日月曜日

PostgreSQLをインストール後に、initdbする。

ubuntuでパッケージからPostgreSQLをインストールした後で、EUC_JPなデータベースを作ろうとするとエラーになるときの対応法です。

ubuntu8.04 LTS ServerにPostgreSQLを次の手順でインストールします。
$ sudo apt-get install postgresql-8.3
postgresユーザーになって、EUC_JPでcreatedbしてみます。
$ su - postgres
$ createdb データベース名 -O オーナー -E EUC_JP
そうすると
createdb: database creation failed: ERROR:  encoding EUC_JP does not match server's locale ja_JP.UTF-8
DETAIL:  The server's LC_CTYPE setting requires encoding UTF8.
と表示され、データベースを作成することが出来ません。

対応方法として、これで正しいのか確証はないですけど、次の手順で対応しました。
$ sudo localedef -i ja_JP -f euc-JP ja_JP.EUC-JP
$ cd /var/lib/postgresql/8.3
$ sudo mv main main_org
$ sudo mkdir main
$ sudo chown -R postgres:postgres main
$ su - postgres
$ /usr/lib/postgresql/8.3/bin/initdb -D /var/lib/postgresql/8.3/main --encoding=UTF8 --no-locale
$ exit
$ sudo mv main main_new
$ sudo mv main_org main
$ sudo /etc/init.d/postgresql-8.3 stop
$ sudo mv main main_org
$ sudo mv main_new main
$ sudo su - root
# cd /var/lib/postgresql/8.3/main
# ln -s /etc/postgresql-common/root.crt root.crt
# ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
# ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key
# exit
$ sudo /etc/init.d/postgresql-8.3 start

改めで、EUC_JPのデータベースを作成してみます。
$ su - postgres
$ createdb xxxx -E EUC_JP
$ psql -l
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 postgres  | postgres | UTF8
 template0 | postgres | UTF8
 template1 | postgres | UTF8
 xxxx      | postgres | EUC_JP
(4 rows)
として、EUC_JPのデータベースを作成することが出来ました。

0 コメント :

コメントを投稿