在Debian 7上使用Postgres 9.1
创建数据库设置时,Postgresql会显示错误消息" LC_COLLATE =' sv_SE.UTF-8'"
据我所知,语言支持来自底层Debian,我无法在那里设置正确的语言。
> locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
这没有帮助:
> locale-gen sv_SE.UTF-8
Generating locales (this might take a while)...
Generation complete.
导致:
> locale -a
C
C.UTF-8
POSIX
任何线索该怎么办?目的是在创建数据库时获得Postgresql正确的排序顺序。
我偶然找到了解决方案:
答案 0 :(得分:1)
locale-gen
不期望任何参数,因此可能会忽略传递给它的sv_SE.UTF-8
。来自manpage:
概要
区域根
....
locale-gen是一个读取文件/etc/locale.gen并调用的程序 localedef用于选择的本地化配置文件。之后运行locale-gen 你修改了/etc/locale.gen文件。
这与 Ubuntu (manpage)不同,后者出于某种原因有一个非常不同的概要和行为:
locale-gen [options] [locale] [language] ...
问题中的问题源于向Debian应用一种生成仅适用于Ubuntu的语言环境的方法。
还可以强调编辑中的步骤#3:必须重新启动postgres服务器才能识别新的区域设置,否则会抱怨它不存在。