我的服务器上安装了CentOs 6.7:
bash-4.1# uname -r 2.6.32-573.18.1.el6.x86_64
服务器重新启动后,由于语言环境问题,我的PostgreSQL 9.6服务器没有启动。
这里是日志错误消息:pgstartup.log
< 2017-01-26 16:33:08.115 IST > LOG: invalid value for parameter "lc_messages": "en_US.UTF-8" < 2017-01-26 16:33:08.123 IST > LOG: invalid value for parameter "lc_monetary": "en_US.UTF-8" < 2017-01-26 16:33:08.123 IST > LOG: invalid value for parameter "lc_numeric": "en_US.UTF-8" < 2017-01-26 16:33:08.123 IST > LOG: invalid value for parameter "lc_time": "en_US.UTF-8" < 2017-01-26 16:33:08.123 IST > FATAL: configuration file "/var/lib/pgsql/9.6/data/postgresql.conf" contains errors
期望在系统中可用的语言环境“en_US.UTF-8”。 我已经检查,确实可用。
bash-4.1# locale -a | grep en_US locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_COLLATE to default locale: No such file or directory en_US en_US.UTF-8 en_US.iso88591 en_US.iso885915 en_US.utf8
所以,我从postgresql.conf文件中注释了以下几行:
#lc_messages = 'en_US.UTF-8' # locale for system error message # strings #lc_monetary = 'en_US.UTF-8' # locale for monetary formatting #lc_numeric = 'en_US.UTF-8' # locale for number formatting #lc_time = 'en_US.UTF-8' # locale for time formatting
根据上面的注释行,服务器正在盯着,但无法login到服务器,并哭了以下错误:
bash-4.1$ psql psql: FATAL: database locale is incompatible with operating system DETAIL: The database was initialized with LC_COLLATE "en_US.UTF-8", which is not recognized by setlocale(). HINT: Recreate the database with another locale or install the missing locale.
现在我在系统中有postgres所需要的语言环境,然后也哭了。不知道问题出在哪里。
注意:服务器重启后会产生此问题。
我find了解决这个问题的办法。
实际上,语言环境由Glibc库提供。 在服务器上,Glibc版本是2.12。
由于某些原因,我们需要2.14版本,并且无法通过yum将2.12升级到2.14,因为yum说的是最新版本。
所以我们手动编译2.14源码并创build二进制文件。
并将2.12的链接改为2.14,并创build了这个混乱。
解决scheme:恢复到原始2.12版本的sym链接。
道德:永远不要搞glibc,不要把sym链接指向不同的版本。