PostgreSQL 9.5 tidak akan mulai setelah pembaruan Windows 10 jatuh

13

Saya telah menginstal pembaruan Windows 10 Fall (1709) dan sekarang server PostgreSQL 9.5 saya tidak akan mulai. Ini berfungsi kemarin sebelum pembaruan dan saya belum membuat perubahan pada konfigurasi.

Saya telah memeriksa penampil acara dan menemukan pesan kesalahan berikut:

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

Sepertinya Microsoft mengubah nama lokal dengan pembaruan Fall, saya tidak dapat menemukan daftar nama lokal yang tersedia jadi saya memutuskan untuk menginstal Postgres 10 dan itu mengkonfirmasi kecurigaan saya, postgresql.conf di Postgres 10 sekarang berbunyi:

# 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

Saya mengubah nilai konfigurasi untuk server PostgreSQL 9.5 menjadi 'Czech_Czechia.1250' dan mulai ok, tetapi masalahnya adalah sekarang saya tidak dapat terhubung ke basis data apa pun, pgAdmin III memberi saya kesalahan berikut:

pgAdmin error

Apakah ada cara untuk mendapatkan data kembali? Saya tidak dapat membuat dump atau menjalankan pg_upgrade karena database sekarang memiliki lokal yang tidak valid dan saya tidak dapat terhubung ke mereka. Mungkin ada cara untuk mengubah lokasi basis data secara manual? Secara teori, seharusnya tidak menimbulkan masalah karena satu-satunya nama yang berbeda untuk pengkodean yang sama.

jvb
sumber
2
Mungkin Anda bisa membuat ulang lokal yang hilang sebagai lokal kustom dengan alat Pembuat Pembuat Situs mereka .
Daniel Vérité

Jawaban:

12

Berkat saran dari Daniel Vérité saya dapat memperbaikinya tanpa membuang seluruh server db. Pemahaman saya tentang lokal pada Windows sangat terbatas tetapi dari apa yang saya pelajari sepertinya Microsoft mengubah nama daerah dari bahasa ceko dari "Republik Ceko" menjadi "Czechia" selama pembaruan Fall Creators (mungkin karena itu sesuai dengan ISO 3166-1) .

Entah bagaimana Postgres memuat lokal dengan kombinasi nama bahasa dan nama wilayah, jadi basis data yang dibuat sebelum perubahan ini tidak dapat dihubungkan karena kombinasi bahasa dan wilayah tidak lagi valid.

Jadi untuk memperbaikinya, saya mengunduh Locale Builder 2.0 dari Microsoft, dan kemudian:

  1. Menciptakan lokal baru berdasarkan lokal Ceko (cs-CZ), menyimpan nama lokal yang sama (cs-CZ)
  2. Mengubah nama kawasan menjadi "Republik Ceko" (dari "Czechia")
  3. Pemasang yang dibuat dengan memilih "Bangun" -> "Bangun Pemasang Lokal"
  4. Menginstal lokal yang baru dibuat dengan menjalankan file .msi yang dibuat pada langkah sebelumnya
  5. Mulai ulang server PostgreSQL, kali ini dimulai tanpa masalah

Sekarang saya dapat menjalankan PostgreSQL 9.5 dengan 'Czech_Czech Republic.1250' dan PostgreSQL 10 dengan 'Czech_Czechia.1250' dan keduanya bekerja.

Saya tidak yakin apakah boleh membuat lokal dengan nama lokal yang sama (cs-CZ), tetapi sepertinya tidak menimbulkan masalah, mungkin seseorang dapat menguraikan lebih lanjut.

jvb
sumber