在debian上将语言环境设置为sv_SE

时间:2014-06-11 07:50:03

标签: postgresql debian

在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正确的排序顺序。

我偶然找到了解决方案:

  1. 通过删除#
  2. 取消注释etc / locale.gen中的#sv_SE.UTF-8
  3. 运行sudo locale-gen
  4. 重新启动服务器

1 个答案:

答案 0 :(得分:1)

Debian 上的

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服务器才能识别新的区域设置,否则会抱怨它不存在。