PostgreSQL 9.5 ne démarre pas après la mise à jour automnale de Windows 10


13

J'ai installé la mise à jour Windows 10 Fall (1709) et maintenant mon serveur PostgreSQL 9.5 ne démarre pas. Cela a fonctionné hier avant la mise à jour et je n'ai apporté aucune modification à la configuration.

J'ai vérifié l'Observateur d'événements et trouvé les messages d'erreur suivants:

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

Il semble que Microsoft ait changé le nom des paramètres régionaux avec la mise à jour d'automne, je n'ai trouvé aucune liste de noms de paramètres régionaux disponibles, j'ai donc décidé d'installer Postgres 10 et cela a confirmé mes soupçons, le postgresql.conf dans Postgres 10 se lit maintenant:

# 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

J'ai changé les valeurs de configuration pour le serveur PostgreSQL 9.5 en 'Czech_Czechia.1250' et ça a bien commencé, mais le problème est que maintenant je ne peux plus me connecter à aucune base de données, pgAdmin III me donne l'erreur suivante:

Erreur pgAdmin

Existe-t-il un moyen de récupérer les données? Je ne peux pas créer de vidage ou exécuter pg_upgrade car les bases de données ont maintenant des paramètres régionaux non valides et je ne peux pas me connecter à elles. Peut-être existe-t-il un moyen de modifier manuellement les paramètres régionaux de la base de données? En théorie, cela ne devrait pas poser de problème car son seul nom est différent pour le même encodage.


2
Vous pouvez peut-être recréer les paramètres régionaux manquants en tant que paramètres régionaux personnalisés avec leur outil Locale Builder .
Daniel Vérité

Réponses:


12

Grâce à la suggestion de Daniel Vérité, j'ai pu le réparer sans vider l'intégralité du serveur db. Ma compréhension des paramètres régionaux sous Windows est très limitée, mais d'après ce que j'ai appris, il semble que Microsoft ait changé le nom de la région des paramètres régionaux tchèques de «République tchèque» en «République tchèque» lors de la mise à jour de Fall Creators (vraisemblablement conforme à ISO 3166-1) .

Postgres charge en quelque sorte les paramètres régionaux en combinant le nom de la langue et le nom de la région, de sorte que les bases de données créées avant cette modification ne peuvent pas être connectées car la combinaison de la langue et de la région n'est plus valide.

Donc, pour y remédier, j'ai téléchargé Locale Builder 2.0 de Microsoft, puis:

  1. Création de nouveaux paramètres régionaux basés sur les paramètres régionaux tchèques (cs-CZ), conservation du même nom de paramètres régionaux (cs-CZ)
  2. Changement du nom de la région en "République tchèque" (de "République tchèque")
  3. Programme d'installation créé en sélectionnant "Build" -> "Build Locale Installer"
  4. Installation des paramètres régionaux nouvellement créés en exécutant le fichier .msi créé à l'étape précédente
  5. Redémarrage du serveur PostgreSQL, cette fois il a démarré sans problème

Maintenant, je peux exécuter PostgreSQL 9.5 avec 'Czech_Czech Republic.1250' et PostgreSQL 10 avec 'Czech_Czechia.1250' et ils fonctionnent tous les deux.

Je ne sais pas s'il est correct de créer les paramètres régionaux avec le même nom de paramètres régionaux (cs-CZ), mais cela ne semble pas poser de problème, peut-être que quelqu'un peut élaborer davantage.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.