Windows 10秋季更新后,PostgreSQL 9.5无法启动


13

我已经安装了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给了我以下错误:

pgAdmin错误

有没有办法找回数据?我无法创建转储或运行pg_upgrade,因为数据库现在具有无效的语言环境,并且无法连接到它们。也许有一种方法可以手动更改数据库的语言环境?从理论上讲,它不会引起任何问题,因为对于相同的编码,它的唯一名称不同。


2
也许您可以使用其Locale Builder工具将缺少的语言环境重新创建为自定义语言环境。
DanielVérité17年

Answers:


12

感谢DanielVérité的建议,我得以解决此问题,而无需转储整个数据库服务器。我对Windows上的语言环境的了解非常有限,但是据我了解,微软似乎在Fall Creators更新期间将捷克语语言环境的区域名称从“捷克共和国”更改为“捷克语”(大概符合ISO 3166-1)。 。

Postgres以某种方式通过语言名称和区域名称的组合来加载语言环境,因此由于语言和区域的组合不再有效,因此在此更改之前创建的数据库无法连接。

因此,要解决此问题,我从Microsoft 下载了Locale Builder 2.0,然后:

  1. 基于捷克语言环境(cs-CZ)创建了新的语言环境,并保留了相同的语言环境名称(cs-CZ)
  2. 将区域名称更改为“捷克共和国”(从“捷克共和国”)
  3. 通过选择“构建”->“构建语言环境安装程序”来创建安装程序
  4. 通过运行上一步中创建的.msi文件安装新创建的语言环境
  5. 重新启动PostgreSQL服务器,这次启动没有问题

现在,我可以使用“ Czech_Czech Republic.1250”运行PostgreSQL 9.5,并使用“ Czech_Czechia.1250”运行PostgreSQL 10,它们都可以工作。

我不确定是否可以使用相同的语言环境名称(cs-CZ)创建语言环境,但是似乎没有任何问题,也许有人可以详细说明。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.