Day2day Opportunism

まぁ、平たく言うと「雑記」がだらだらと・・・

postgreSQL で createdb に失敗

一応、商用で運用していたサービスを一旦停止して借りていたサーバーの契約を

切ることになったのだが、動作環境は残しておきたい…
あいにく、他の借りているサーバーとは構成が違くて別に用意しないといけない…
仕方ないので、ローカルに環境を作っているのだが、使用するDBを作ろうとしたところでエラーに。
-bash-4.1$ createdb -E EUC_JP new_DB
createdb: データベースの生成に失敗しました:ERROR:  符号化方式"EUC_JP"がロケール"ja_JP.UTF-8"に合いません
DETAIL:  選択されたLC_CTYPEを設定するには、符号化方式"UTF8"である必要があります。
…とりあえず、ログを見る。
-bash-4.1$ cat  9.4/data/pg_log/postgresql-Tue.log
< 2015-10-20 16:25:29.605 JST >ERROR:  符号化方式"EUC_JP"がロケール"ja_JP.UTF-8"に合いません
< 2015-10-20 16:25:29.605 JST >詳細:  選択されたLC_CTYPEを設定するには、符号化方式"UTF8"である必要があります。
< 2015-10-20 16:25:29.605 JST >ステートメント:  CREATE DATABASE "web_Naru" ENCODING 'EUC_JP';
一応、確認。
-bash-4.1$ psql -U postgres
psql (9.4.5)

"help" でヘルプを表示します.

postgres=# \l

                                         データベース一覧

   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権

-----------+----------+------------------+-------------+-------------------+-----------------------

 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |

 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +

           |          |                  |             |                   | postgres=CTc/postgres

 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +

           |          |                  |             |                   | postgres=CTc/postgres

(3 行)
ロケールを指定すれば良いらしいので、指定してみる。
-bash-4.1$ createdb -E EUC_JP --locale=ja_JP.EUC_JP  new_DB

createdb: データベースの生成に失敗しました:ERROR:  新しい符号化方式(EUC_JP)はテンプレートデータベースの符号化方式(UTF8)と互換性がありません

HINT:  テンプレートデータベースの符号化方式と同じものを使うか、もしくは template0 をテンプレートとして使用してください
そうなのね。じゃあ、指定してみる。
-bash-4.1$ createdb -E EUC_JP --locale=ja_JP.EUC_JP  new_DB --template=template0

-bash-4.1$ psql -U postgres

psql (9.4.5)

"help" でヘルプを表示します.


postgres=# \l

                                          データベース一覧
   名前    |  所有者  | エンコーディング |   照合順序   | Ctype(変換演算子) |      アクセス権

-----------+----------+------------------+--------------+-------------------+-----------------------

 postgres  | postgres | UTF8             | ja_JP.UTF-8  | ja_JP.UTF-8       |

 template0 | postgres | UTF8             | ja_JP.UTF-8  | ja_JP.UTF-8       | =c/postgres          +

           |          |                  |              |                   | postgres=CTc/postgres

 template1 | postgres | UTF8             | ja_JP.UTF-8  | ja_JP.UTF-8       | =c/postgres          +

           |          |                  |              |                   | postgres=CTc/postgres

 new_DB    | postgres | EUC_JP           | ja_JP.EUC_JP | ja_JP.EUC_JP      |

(4 行)
とりあえず、作れたらしい。
参考 というか確認として調べた。悩んだのがアホだった。