PostgreSQL 9.2在Ubuntu 12.04上“无效的区域设置名称”

今天,我通过apt.postgresql.org在Ubuntu上精确安装了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 …你能帮忙吗?

如果在创build新语言环境之后PostgreSQL没有重新启动,那就是原因。 service postgresql restart应该就足够了。

这大概是由于在Linux libc如何实现语言环境。 新的语言环境不能无缝地导入到已经运行的进程的环境中。