postgres failed to initialize lc_messages solved

Share

得到这个错误:

FATAL:  XX000: failed to initialize lc_messages to “”
LOCATION:  InitializeGUCOptions, guc.c:1867

为了方便看日文的source,把测试服务器的LANG改成了Shift_jis,结果今天就启动不了了,到官方一看,原来还是这个原因,虚惊一场。改回来就ok了。。

相对于哪些安装、编译不用指定编码的数据库来说,这很莫名的一个错误,但是对于postgres来说,就有这么严格,因为在一个数据库目录init的时候,需要根据你的服务器环境来决定数据库的安装字符集(如果没有带–encoding=encoding这个参数的话,如果在执行initdb的时候,加上了–encoding=”zh_CN”,那么不管你的服务器环境如何,它将以简体中文作为默认的模板编码)。

两种办法:(以下的encoding是你所在地区的编码,如中国大陆是zh-CN,日文就是Shift_JIS或者是EUC-jp等。这取决你初始化数据库的时候的字符编码)

其一、执行 #export LANG=”Encodeing”
其二、修改 /etc/sysconfig/i18n 这个文件,把第一行改成是LANG=”Encodeing”

执行 #locale -a | grep ^ja   (你的字符集的一部分,如ja,zh等)
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

有支持就ok,收工。。