我已经安装了Windows 10 Fall更新(1709),现在我的PostgreSQL 9.5服务器无法启动。它昨天在更新之前有效,并且我没有对配置进行任何更改。
我检查了事件查看器,发现以下错误消息:
2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_monetary": "Czech_Czech Republic.1250"
2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_numeric": "Czech_Czech Republic.1250"
2017-10-19 11:32:32 CEST LOG: invalid value for parameter "lc_time": "Czech_Czech Republic.1250"
2017-10-19 11:32:32 CEST FATAL: configuration file "C:/Program Files/PostgreSQL/9.5/data/postgresql.conf" contains errors
似乎Microsoft随着Fall更新更改了语言环境名称,我找不到可用的语言环境名称的任何列表,因此我决定安装Postgres 10,它证实了我的怀疑,Postgres 10中的postgresql.conf现在显示为:
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'Czech_Czechia.1250' # locale for system error message
# strings
lc_monetary = 'Czech_Czechia.1250' # locale for monetary formatting
lc_numeric = 'Czech_Czechia.1250' # locale for number formatting
lc_time = 'Czech_Czechia.1250' # locale for time formatting
我将PostgreSQL 9.5服务器的配置值更改为'Czech_Czechia.1250',它开始正常,但是问题是现在我无法连接到任何数据库,pgAdmin III给了我以下错误:
有没有办法找回数据?我无法创建转储或运行pg_upgrade,因为数据库现在具有无效的语言环境,并且无法连接到它们。也许有一种方法可以手动更改数据库的语言环境?从理论上讲,它不会引起任何问题,因为对于相同的编码,它的唯一名称不同。