web-dev-qa-db-fra.com

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

J'ai installé la mise à jour de 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:

pgAdmin error

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.

13
jvb

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 a 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 (probablement pour qu'il soit conforme à ISO 3166-1) .

Postgres charge en quelque sorte les paramètres régionaux par combinaison du nom de la langue et du 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 le corriger, j'ai téléchargé Locale Builder 2. 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.

12
jvb