it-swarm.com.de

PostgreSQL 9.5 wird nach dem Windows 10-Herbstupdate nicht gestartet

Ich habe das Windows 10 Fall-Update (1709) installiert und jetzt startet mein PostgreSQL 9.5-Server nicht mehr. Es hat gestern vor dem Update funktioniert und ich habe keine Änderungen an der Konfiguration vorgenommen.

Ich habe die Ereignisanzeige überprüft und folgende Fehlermeldungen gefunden:

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

Es scheint, als hätte Microsoft den Namen des Gebietsschemas mit dem Herbst-Update geändert. Ich konnte keine Liste der verfügbaren Gebietsschemanamen finden. Daher habe ich mich für die Installation von Postgres 10 entschieden. Dies bestätigte meinen Verdacht. Die postgresql.conf in Postgres 10 lautet nun:

# 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

Ich habe die Konfigurationswerte für den PostgreSQL 9.5-Server in 'Czech_Czechia.1250' geändert und es wurde in Ordnung gestartet. Das Problem ist jedoch, dass ich jetzt keine Verbindung zu einer Datenbank herstellen kann. PgAdmin III gibt folgenden Fehler aus:

(pgAdmin error

Gibt es eine Möglichkeit, die Daten zurückzugewinnen? Ich kann keinen Speicherauszug erstellen oder pg_upgrade ausführen, da die Datenbanken jetzt ein ungültiges Gebietsschema haben und ich keine Verbindung zu ihnen herstellen kann. Vielleicht gibt es eine Möglichkeit, das Gebietsschema der Datenbank manuell zu ändern? Theoretisch sollte es keine Probleme verursachen, da es nur einen anderen Namen für dieselbe Codierung gibt.

13
jvb

Dank des Vorschlags von Daniel Vérité konnte ich das Problem beheben, ohne den gesamten Datenbankserver zu entleeren. Mein Verständnis der Gebietsschemas unter Windows ist sehr begrenzt, aber nach meinen Erkenntnissen scheint Microsoft den Regionsnamen des tschechischen Gebietsschemas während des Herbst-Creators-Updates von "Tschechische Republik" in "Tschechien" geändert zu haben (vermutlich so, dass es ISO 3166-1 entspricht). .

Postgres lädt das Gebietsschema irgendwie durch die Kombination von Sprachname und Regionsname, sodass Datenbanken, die vor dieser Änderung erstellt wurden, nicht verbunden werden können, da die Kombination von Sprache und Region nicht mehr gültig ist.

Um das Problem zu beheben, habe ich Locale Builder 2. von Microsoft heruntergeladen und dann:

  1. Neues Gebietsschema basierend auf dem tschechischen Gebietsschema (cs-CZ) erstellt, derselbe Gebietsschemaname (cs-CZ) beibehalten
  2. Der Name der Region wurde in "Tschechische Republik" geändert (von "Tschechien").
  3. Erstelltes Installationsprogramm durch Auswahl von "Build" -> "Build Locale Installer"
  4. Installierte das neu erstellte Gebietsschema, indem die im vorherigen Schritt erstellte MSI-Datei ausgeführt wurde
  5. Der PostgreSQL-Server wurde neu gestartet, diesmal ohne Probleme

Jetzt kann ich PostgreSQL 9.5 mit 'Czech_Czech Republic.1250' und PostgreSQL 10 mit 'Czech_Czechia.1250' ausführen und beide funktionieren.

Ich bin nicht sicher, ob es in Ordnung ist, das Gebietsschema mit demselben Gebietsschemanamen (cs-CZ) zu erstellen, aber es scheint keine Probleme zu verursachen, vielleicht kann jemand mehr ausarbeiten.

12
jvb