PostgreQuery 9.5 sẽ không bắt đầu sau khi cập nhật Windows 10 rơi


13

Tôi đã cài đặt bản cập nhật Windows 10 Fall (1709) và bây giờ máy chủ PostgreQuery 9.5 của tôi sẽ không khởi động. Nó đã hoạt động vào ngày hôm qua trước khi cập nhật và tôi chưa thực hiện bất kỳ thay đổi nào đối với cấu hình.

Tôi đã kiểm tra trình xem sự kiện và tìm thấy các thông báo lỗi sau:

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

Có vẻ như Microsoft đã thay đổi tên miền địa phương bằng bản cập nhật Fall, tôi không thể tìm thấy bất kỳ danh sách tên miền địa phương nào có sẵn nên tôi đã quyết định cài đặt Postgres 10 và nó đã xác nhận sự nghi ngờ của tôi, postgresql.conf trong Postgres 10 hiện đọc:

# 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

Tôi đã thay đổi các giá trị cấu hình cho máy chủ PostgreQuery 9.5 thành 'Czech_C817ia.1250' và nó đã bắt đầu ổn, nhưng vấn đề là bây giờ tôi không thể kết nối với bất kỳ cơ sở dữ liệu nào, pgAdmin III gây ra lỗi sau:

lỗi pgAdmin

Có cách nào để lấy lại dữ liệu không? Tôi không thể tạo kết xuất hoặc chạy pg_upTHER vì cơ sở dữ liệu hiện có ngôn ngữ không hợp lệ và tôi không thể kết nối với chúng. Có lẽ có một cách để thay đổi ngôn ngữ của cơ sở dữ liệu bằng tay? Về lý thuyết, nó không gây ra bất kỳ vấn đề nào vì tên khác nhau của nó cho cùng một mã hóa.


2
Có lẽ bạn có thể tái tạo locale thiếu như một miền địa phương tuỳ chỉnh với họ Locale Builder công cụ.
Daniel Vérité

Câu trả lời:


12

Nhờ đề xuất từ ​​Daniel Vérité, tôi đã có thể sửa nó mà không phải hủy toàn bộ máy chủ db. Sự hiểu biết của tôi về các địa điểm trên Windows rất hạn chế nhưng từ những gì tôi đã học được, có vẻ như Microsoft đã thay đổi tên khu vực của địa phương Séc từ "Cộng hòa Séc" thành "Cộng hòa Séc" trong bản cập nhật Fall Creators (có lẽ vì vậy nó phù hợp với ISO 3166-1) .

Postgres bằng cách nào đó tải miền địa phương bằng cách kết hợp tên ngôn ngữ và tên khu vực, vì vậy cơ sở dữ liệu được tạo trước khi thay đổi này không thể được kết nối do sự kết hợp giữa ngôn ngữ và khu vực không còn hợp lệ.

Vì vậy, để khắc phục, tôi đã tải xuống Locale Builder 2.0 từ Microsoft và sau đó:

  1. Tạo miền địa phương mới dựa trên miền địa phương Séc (cs-CZ), giữ nguyên tên miền địa phương (cs-CZ)
  2. Thay đổi tên khu vực thành "Cộng hòa Séc" (từ "Cộng hòa Séc")
  3. Đã tạo trình cài đặt bằng cách chọn "Build" -> "Build Locale Installer"
  4. Đã cài đặt ngôn ngữ mới được tạo bằng cách chạy tệp .msi được tạo ở bước trước
  5. Đã khởi động lại máy chủ PostgreSQL, lần này nó khởi động mà không gặp vấn đề gì

Bây giờ tôi có thể chạy PostgreQuery 9.5 với 'Czech_C817 Republic.1250' và PostgreQuery 10 với 'Czech_C817ia.1250' và cả hai đều hoạt động.

Tôi không chắc liệu có ổn không khi tạo miền địa phương có cùng tên miền địa phương (cs-CZ), nhưng dường như không gây ra vấn đề gì, có lẽ ai đó có thể giải thích nhiều hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.