PostgreSQL 8.3でEUC_JPのデータベースが作成できない時の原因と解決方法

Solarisのコンソール画面等で「createdb -U postgres -E EUC_JP データベース名」とコマンドを叩き、PostgreSQLのデータベースをEUC_JPで作成しようとすると、サーバのロケール(UTF-8)と一致しない、といったエラーメッセージが表示され、作成に失敗してしまうことがある。

$ createdb -U postgres -E EUC_JP nobuneko
ERROR: encoding EUC_JP does not match server's locale ja_JP.UTF-8
DETAIL: The server's LC_CTYPE setting requires encoding UTF8.
STATEMENT: CREATE DATABASE nobuneko ENCODING 'EUC_JP';

createdb: データベースの生成に失敗しました: ERROR: encoding EUC_JP does not match server's locale ja_JP.UTF-8
DETAIL: The server's LC_CTYPE setting requires encoding UTF8.

どうやら、initdbを実行する時のコマンドが悪かったようだ。

《EUC_JPのデータベースの作成に失敗した時のinitdbのコマンド》
/usr/local/postgresql8/bin/initdb -D /usr/local/postgresql8/data

《EUC_JPのデータベースの作成に成功した時のinitdbのコマンド》
/usr/local/postgresql8/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/postgresql8/data

このように「--encoding=EUC_JP」と「--no-locale」といったオプションをつけてinitdbをやり直せば解決した。

前へ

PostgreSQLのエラー「initdb: cannot be run as root」の原因と解決方法

次へ

Norton Internet Securityのウイルス定義ファイルがハードディスクを食い尽くすことがある