PostgreSQLでja_JP.UTF-8のデータベース作成時のlocaleエラー
PostgreSQL上でja_JP.UTF-8
を指定してデータベースを指定した場合にエラー発生
postgres=# CREATE DATABASE locale_jp_utf8
postgres-# TEMPLATE template0 ENCODING 'UTF-8'
postgres-# LC_COLLATE 'ja_JP.UTF-8' LC_CTYPE 'ja_JP.UTF-8';
ERROR: invalid locale name: "ja_JP.UTF-8"
OS上のlocaleを確認してみたらja_JP.UTF-8
がない。
[postgres@pgsql ~]$ locale -a
C
C.utf8
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE@euro
en_IE.utf8
en_IL
en_IN
en_NG
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SC.utf8
en_SG
en_SG.utf8
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
en_ZM
en_ZW
en_ZW.utf8
POSIX
ja_JP.UTF-8をセットアップしようとするとcharacter map file
が見つからないというエラーが発生。
[postgres@pgsql ~]$ sudo localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
[error] character map file `UTF-8' not found: No such file or directory
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
[postgres@pgsql ~]$
glibc-locale-source
とglibc-langpack-en
をインストール後に再実行
[postgres@pgsql ~]$ sudo yum -y install glibc-locale-source glibc-langpack-en
[postgres@pgsql ~]$ sudo localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
[error] character map file `UTF-8' not found: No such file or directory
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
locale -a
で確認
[postgres@pgsql ~]$ locale -a
C
C.utf8
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE@euro
en_IE.utf8
en_IL
en_IN
en_NG
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SC.utf8
en_SG
en_SG.utf8
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
en_ZM
en_ZW
en_ZW.utf8
ja_JP.utf8
POSIX
この状態であればPostgreSQL上でのデータベース作成が成功する。※PostgreSQLの再起動必要
postgres=# CREATE DATABASE locale_us_utf8
postgres-# TEMPLATE template0 ENCODING 'UTF-8'
postgres-# LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
CREATE DATABASE
postgres=#
関連しているかもしれない記事
- PostgreSQLのpg_rmanを使用してバックアップ/リカバリを行う
- Oracle PL/SQLでバイナリデータ・ファイルをBLOBに挿入する
- Aurora(PostgreSQL)のbytea列にバイナリデータをpythonでインサートする
- OracleとPostgreSQLのトランザクション差異について整理する
- AWS Schema Conversion Toolを使用したOracleからAurora(PostgreSQL)への変換結果