一応、商用で運用していたサービスを一旦停止して借りていたサーバーの契約を
切ることになったのだが、動作環境は残しておきたい…
あいにく、他の借りているサーバーとは構成が違くて別に用意しないといけない…
仕方ないので、ローカルに環境を作っているのだが、使用する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 行)
とりあえず、作れたらしい。
参考 というか確認として調べた。悩んだのがアホだった。