今天我通过 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