Làm cách nào để buộc Windows hỗ trợ không hỗ trợ LC_COLLATE và LC_TYPE trong PostgreQuery?


8

Tôi có bản cài đặt mới của PostgreSQL 9.1.x. Thật không may, tôi phát hiện ra rằng hệ điều hành không hỗ trợ LC_COLLATE = 'pl_PL.utf8'LC_CTYPE = 'pl_PL.utf8'. Tôi đọc trong tài liệu PostgreSQL rằng:

Trên tất cả các nền tảng, các bộ sưu tập có tên mặc định, C và POSIX đều khả dụng. Đối chiếu bổ sung có thể có sẵn tùy thuộc vào hỗ trợ hệ điều hành.

Có phải là một cách, tuy nhiên để buộc Windows phải hỗ trợ ngôn ngữ đó? Tôi có nghĩa là một bản vá, plugin hoặc một cái gì đó.

Câu trả lời:


7

Trên Windows, có khả năng ngôn ngữ cần thiết đã được cài đặt, nó chỉ được đặt tên khác so với trên Unix.

Ví dụ, việc tạo cơ sở dữ liệu sau đây có vẻ hoạt động tốt với tôi với PG9.1 trên Windows XP, với ngôn ngữ mặc định French_France.1252và không có gói ngôn ngữ bổ sung nào được cài đặt mà tôi nhớ lại.

CREATE DATABASE pldb
       ENCODING = 'UTF8'
       LC_COLLATE = 'Polish'
       LC_CTYPE = 'Polish'
       TEMPLATE=template0;

Ngoài ra, kiểm tra nhanh thứ tự sắp xếp bằng cách gửi truy vấn này trong UTF8 trong cơ sở dữ liệu mới được tạo này:

select * from (values ('z'), ('ź'), ('ż'), ('s'), ('ś'), ('x'), ('y')) as letters order by 1;

dường như cho kết quả chính xác:

s
s
x
y
z
¼
Z


Hmmm ... có lẽ bạn đúng ...
marioosh

1

Theo như tôi biết, bạn không thể buộc phiên bản Windows của PostgreSQL hỗ trợ các địa điểm và các bộ sưu tập không được cung cấp bởi Windows. PostgreSQL sử dụng hỗ trợ đối chiếu và đối chiếu hệ thống. Nếu hệ thống không hỗ trợ nó, bạn không thể sử dụng nó. Đây là một hạn chế bực bội đôi khi, nhưng nó như thế nào. Bạn cần chọn một mã hóa và đối chiếu phù hợp được hỗ trợ bởi cài đặt Windows của bạn.

Nếu bạn muốn đặt bí danh một tên đối chiếu HĐH và gọi nó, pl_PL.utf8bạn có thể làm điều đó với CREATE COLLATION.

Xem Hỗ trợ bộ ký tự , Hỗ trợ đối chiếu và bảng danh mục pg_collation .

Vấn đề bạn đang cố gắng giải quyết là gì?


Bởi không." Bạn có nghĩa là không có cách nào để hỗ trợ này trên Windows? Có lẽ tôi có thể cài đặt một cái gì đó để làm cho nó hoạt động. Tôi cần điều đó LC_COLLATE, LC_CTYPEđược thiết lập để 'pl_PL.utf8'sắp xếp hợp lệ.

@marioosh Bạn cần tìm hiểu ngôn ngữ Windows tương đương với các quy tắc đối chiếu bạn cần. Theo quan điểm của tôi đây là một chút của mụn cóc; Tôi thực sự mong muốn PG sẽ cung cấp ít nhất là hỗ trợ mã hóa / đối chiếu nội bộ tùy chọn, thay vì phải luôn luôn dựa vào sự hỗ trợ của HĐH. Trả lời cập nhật với một liên kết tài liệu.
Craig Ringer
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.