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
로케일 빌더 도구를 사용하여 누락 된 로케일을 사용자 정의 로케일로 다시 작성할 수 있습니다.
Daniel Vérité

답변:


12

Daniel Vérité의 제안 덕분에 전체 DB 서버를 덤프하지 않고 수정할 수있었습니다. Windows에서 로캘에 대한 이해는 매우 제한적이지만, 가을 크리에이터 업데이트 중에 Microsoft가 체코 어 로캘의 지역 이름을 "체코 공화국"에서 "체코"로 변경 한 것처럼 보입니다 (아마도 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)으로 로캘을 만들 수 있는지 확실하지 않지만 문제가 발생하지 않는 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.