PostgreSQL 9.5 не запуститься після оновлення Windows 10 падіння


13

Я встановив оновлення Windows 10 Fall (1709) і тепер мій сервер PostgreSQL 9.5 не запуститься. Він працював вчора до оновлення, і я не вносив жодних змін у конфігурацію.

Я перевірив переглядач подій і виявив такі повідомлення про помилки:

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

Схоже, що Microsoft змінило ім’я локальної мови з оновленням Fall, я не зміг знайти жодного списку доступних імен локалів, тому я вирішив встановити Postgres 10, і це підтвердило мою підозру, postgresql.conf в Postgres 10 тепер говорить:

# 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 на 'Czech_Cechia.1250', і все почалося нормально, але проблема полягає в тому, що зараз я не можу підключитися до будь-якої бази даних, pgAdmin III дає мені таку помилку:

pgAdmin error

Чи є спосіб повернути дані? Я не можу створити дамп або запустити pg_upgrade, оскільки тепер у базах даних є недійсна локаль, і я не можу підключитися до них. Можливо, є спосіб змінити локальну базу даних вручну? Теоретично це не повинно викликати жодних проблем, оскільки його єдине інше ім'я для одного і того ж кодування.


2
Можливо, ви могли б відтворити відсутню локаль як власну локаль за допомогою їх інструмента Locale Builder .
Даніель Верете

Відповіді:


12

Завдяки пропозиції від Daniel Vérité я зміг це виправити, не скидаючи весь сервер db. Моє розуміння місцеположень у Windows дуже обмежене, але з того, що я дізнався, здається, що Microsoft змінила назву регіону чеської мови з "Чеська Республіка" на "Чехія" під час оновлення Fall Creators (імовірно, це відповідає ISO 3166-1) .

Postgres якось завантажує локаль за допомогою комбінації назви мови та назви регіону, тому бази даних, створені до цієї зміни, неможливо підключити, оскільки комбінація мови та регіону вже не дійсна.

Щоб виправити це, я завантажив Locale Builder 2.0 з Microsoft, а потім:

  1. Створено новий локаль на основі чеської мови (cs-CZ), який зберігає ту саму назву локалі (cs-CZ)
  2. Змінено назву регіону на "Чехія" (з "Чехія")
  3. Створено програму встановлення, вибравши "Build" -> "Build Locale Installer"
  4. Встановити новостворений локал, запустивши .msi файл, створений на попередньому кроці
  5. Перезавантажив сервер PostgreSQL, цього разу він запустився без проблем

Тепер я можу запустити PostgreSQL 9.5 з 'Czech_CECH Republic.1250' і PostgreSQL 10 з 'Czech_Ceshia.1250', і вони обидва працюють.

Я не впевнений, чи добре це створити локаль з тим же ім'ям локалі (cs-CZ), але це, здається, не викликає проблем, можливо, хтось може розробити більше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.