PostgreSQL 9.5 จะไม่เริ่มทำงานหลังจากที่ Windows 10 fall update


13

ฉันได้ติดตั้ง Windows 10 Fall update (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 และยืนยันว่าฉันสงสัย postgresql.conf ใน Postgres 10 ตอนนี้อ่าน:

# 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éฉันสามารถแก้ไขได้โดยไม่ต้องทิ้งเซิร์ฟเวอร์ฐานข้อมูลทั้งหมด ความเข้าใจของฉันเกี่ยวกับสถานที่บน Windows มี จำกัด มาก แต่จากสิ่งที่ฉันได้เรียนรู้ดูเหมือนว่า Microsoft เปลี่ยนชื่อภูมิภาคของสถานที่เกิดเหตุจาก "สาธารณรัฐเช็ก" เป็น "สาธารณรัฐเช็ก" ในระหว่างการอัปเดต Fall Builders (สันนิษฐานว่า .

Postgres โหลดสถานที่อย่างใดอย่างหนึ่งโดยการรวมกันของชื่อภาษาและชื่อภูมิภาคดังนั้นฐานข้อมูลที่สร้างขึ้นก่อนการเปลี่ยนแปลงนี้ไม่สามารถเชื่อมต่อได้เนื่องจากการรวมกันของภาษาและภูมิภาคไม่ถูกต้องอีกต่อไป

ดังนั้นเพื่อแก้ไขฉันดาวน์โหลดLocale Builder 2.0จาก Microsoft แล้ว:

  1. สร้างสถานที่ใหม่ตามภาษาเช็ก (cs-CZ) เก็บชื่อเดิมไว้ (cs-CZ)
  2. เปลี่ยนชื่อภูมิภาคเป็น "สาธารณรัฐเช็ก" (จาก "สาธารณรัฐเช็ก")
  3. สร้างตัวติดตั้งโดยเลือก "Build" -> "Build Locale Installer"
  4. ติดตั้งโลแคลที่สร้างขึ้นใหม่โดยรันไฟล์. msi ที่สร้างในขั้นตอนก่อนหน้า
  5. รีสตาร์ทเซิร์ฟเวอร์ PostgreSQL คราวนี้เริ่มโดยไม่มีปัญหา

ตอนนี้ฉันสามารถรัน PostgreSQL 9.5 ด้วย 'Czech_Czech Republic.1250' และ PostgreSQL 10 ด้วย 'Czech_Czechia.1250' และพวกเขาทั้งสองทำงาน

ฉันไม่แน่ใจว่ามันโอเคที่จะสร้างสถานที่ที่มีชื่อสถานที่เดียวกัน (cs-CZ) แต่ดูเหมือนจะไม่ทำให้เกิดปัญหาใด ๆ บางทีอาจมีบางคนที่สามารถอธิบายเพิ่มเติมได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.