PostgreSQL 9.5, Windows 10 sonbahar güncellemesinden sonra başlamıyor


13

Windows 10 Fall güncelleştirmesini (1709) yükledim ve şimdi PostgreSQL 9.5 sunucum başlamıyor. Güncellemeden önce dün çalıştı ve yapılandırmada herhangi bir değişiklik yapmadım.

Olay görüntüleyiciyi kontrol ettim ve aşağıdaki hata mesajlarını buldum:

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

Görünüşe göre Microsoft, Sonbahar güncellemesiyle yerel ayar adını değiştirdi, mevcut yerel adların herhangi bir listesini bulamadım, bu yüzden Postgres 10'u yüklemeye karar verdim ve Postgres 10'daki şüphemizi, postgresql.conf'u şimdi okudum:

# 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 sunucusunun yapılandırma değerlerini 'Czech_Czechia.1250' olarak değiştirdim ve tamam başladı, ancak sorun şu anda herhangi bir veritabanına bağlanamıyorum, pgAdmin III bana aşağıdaki hatayı veriyor:

pgAdmin hatası

Verileri geri almanın bir yolu var mı? Veritabanları artık geçersiz yerel ayar olduğundan ve bunlara bağlanamadığım için döküm oluşturamıyorum veya pg_upgrade'yi çalıştıramıyorum. Belki de veritabanının yerel ayarını el ile değiştirmenin bir yolu vardır? Teoride, aynı kodlama için tek farklı adı olduğundan herhangi bir soruna neden olmamalıdır.


2
Belki de Yerel Ayar Oluşturucu aracıyla eksik yerel ayarı özel bir yerel ayar olarak yeniden oluşturabilirsiniz .
Daniel Vérité

Yanıtlar:


12

Daniel Vérité'nin önerisi sayesinde tüm db sunucusunu boşaltmadan düzeltmeyi başardım. Windows'ta yerel ayarları anlamam çok sınırlı, ancak öğrendiğim kadarıyla Microsoft, Güz Yaratıcıları güncellemesi sırasında Çek yerel ayarının bölge adını "Çek Cumhuriyeti" den "Çekya" ya değiştirdi (muhtemelen ISO 3166-1'e uygun) .

Postgres bir şekilde yerel ayarı dil adı ve bölge adı kombinasyonuyla yükler, bu nedenle dil ve bölge kombinasyonu artık geçerli olmadığından bu değişiklikten önce oluşturulan veritabanlarına bağlanamaz.

Düzeltmek için Microsoft'tan Locale Builder 2.0'ı indirdim ve sonra:

  1. Çek yerel ayarına (cs-CZ) dayalı yeni yerel ayar oluşturuldu, aynı yerel ayar adını (cs-CZ) korudu
  2. Bölge adı "Çek Cumhuriyeti" olarak değiştirildi ("Çekya" dan)
  3. "Build" -> "Build Localale Installer" ı seçerek yükleyici oluşturuldu
  4. Önceki adımda oluşturulan .msi dosyasını çalıştırarak yeni oluşturulan yerel ayarı yükledim
  5. PostgreSQL sunucusunu yeniden başlattı, bu sefer sorunsuz başladı

Şimdi PostgreSQL 9.5'ü 'Czech_Czech Republic.1250' ile ve PostgreSQL 10'u 'Czech_Czechia.1250' ile çalıştırabiliyorum ve ikisi de çalışıyor.

Aynı yerel ayar adı (cs-CZ) ile yerel ayar oluşturmanın uygun olup olmadığından emin değilim, ancak herhangi bir soruna neden görünmüyor, belki birisi daha fazla ayrıntı verebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.