Ubuntu 12.04 上的 Postgresql 9.2“无效的语言环境名称”

Ubuntu 12.04 上的 Postgresql 9.2“无效的语言环境名称”

今天我通过 apt.postgresql.org 在 Ubuntu precise 上安装了 Postgresql 9.2 – 一切都相对轻松,直到我陷入“无效的语言环境名称:it_IT.utf8”错误:

root@ubuntu:/tmp# sudo -u postgres psql -Xc "CREATE DATABASE test TEMPLATE template0 ENCODING 'utf8' LC_CTYPE='it_IT.utf8'"
ERROR:  invalid locale name: "it_IT.utf8"

我确实跑了locale-gen it_IT.utf8,事实上:

root@ubuntu:/tmp# locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
it_IT.utf8
POSIX

日志似乎没有任何有意义的信息表明为什么 postgres 无法识别 it_IT.utf8……您能帮忙吗?

答案1

如果在创建新区域设置后尚未重新启动 PostgreSQL,那么这就是原因。service postgresql restart应该足够了。

这可能是由于 Linux 中区域设置的实现方式所致libc。新的区域设置无法无缝导入到已在运行的进程环境中。

答案2

local-gen对我来说不起作用。

我使用以下命令安装了缺少的语言环境:

dpkg-reconfigure locales

然后它显示在locale -a

locale -a

然后重新启动postgresql:

service postgresql restart

相关内容