invalid locale name ja_JP.UTF-8エラー

1. 症状

PostgreSQLのデータベースをリストアしようとして以下のエラーが発生した。

  ERROR:  invalid locale name ja_JP.UTF-8

このSQLでエラーが出ているようだ。

CREATE DATABASE xxx WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'ja_JP.UTF-8' LC_CTYPE = 'ja_JP.UTF-8';

システムにインストールされているロケールを見ると ja_JP.UTF-8 がなかった。

# locale -a
C
POSIX
en_US.utf8

2. 対処

ロケールを追加する。

localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
# locale -a
C
POSIX
en_US.utf8
ja_JP.utf8

3. 参考