PostgreSQL 9.5 non si avvia dopo l'aggiornamento autunnale di Windows 10


13

Ho installato l'aggiornamento di Windows 10 Fall (1709) e ora il mio server PostgreSQL 9.5 non si avvia. Ha funzionato ieri prima dell'aggiornamento e non ho apportato modifiche alla configurazione.

Ho controllato il Visualizzatore eventi e ho trovato i seguenti messaggi di errore:

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

Sembra che Microsoft abbia cambiato il nome della locale con l'aggiornamento di Fall, non sono riuscito a trovare alcun elenco di nomi di locali disponibili, quindi ho deciso di installare Postgres 10 e ha confermato il mio sospetto, il postgresql.conf in Postgres 10 ora recita:

# 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

Ho modificato i valori di configurazione per il server PostgreSQL 9.5 in "Czech_Czechia.1250" ed è iniziato bene, ma il problema è che ora non riesco a collegarmi a nessun database, pgAdmin III mi dà il seguente errore:

Errore pgAdmin

C'è un modo per recuperare i dati? Non riesco a creare il dump o eseguire pg_upgrade poiché i database ora hanno impostazioni internazionali non valide e non riesco a collegarmi a loro. Forse c'è un modo per modificare manualmente le impostazioni internazionali del database? In teoria, non dovrebbe causare problemi dal momento che il suo unico nome diverso per la stessa codifica.


2
Forse potresti ricreare la locale mancante come locale personalizzata con il loro strumento di creazione locale .
Daniel Vérité,

Risposte:


12

Grazie al suggerimento di Daniel Vérité sono stato in grado di risolverlo senza scaricare l'intero server db. La mia comprensione delle impostazioni locali su Windows è molto limitata, ma da quello che ho imparato sembra che Microsoft abbia cambiato il nome della regione delle impostazioni locali ceche da "Repubblica Ceca" a "Repubblica Ceca" durante l'aggiornamento di Fall Creators (presumibilmente quindi conforme a ISO 3166-1) .

Postgres in qualche modo carica le impostazioni internazionali in base alla combinazione del nome della lingua e della regione, quindi i database creati prima di questa modifica non possono essere collegati poiché la combinazione della lingua e della regione non è più valida.

Quindi, per risolverlo, ho scaricato Locale Builder 2.0 da Microsoft e quindi:

  1. Creato nuovo locale basato su locale ceco (cs-CZ), mantenuto lo stesso nome locale (cs-CZ)
  2. Cambiato il nome della regione in "Repubblica Ceca" (da "Repubblica Ceca")
  3. Programma di installazione creato selezionando "Build" -> "Build Local Installer"
  4. Installato il locale appena creato eseguendo il file .msi creato nel passaggio precedente
  5. Riavviato il server PostgreSQL, questa volta è stato avviato senza problemi

Ora posso eseguire PostgreSQL 9.5 con 'Czech_Czech Republic.1250' e PostgreSQL 10 con 'Czech_Czechia.1250' ed entrambi funzionano.

Non sono sicuro che sia giusto creare la locale con lo stesso nome di locale (cs-CZ), ma non sembra causare alcun problema, forse qualcuno può elaborarne di più.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.