Как заставить Windows поддерживать не поддерживаемые LC_COLLATE и LC_TYPE в PostgreSQL?


8

У меня свежая установка PostgreSQL 9.1.x. К сожалению, я обнаружил, что ОС не поддерживает LC_COLLATE = 'pl_PL.utf8'и LC_CTYPE = 'pl_PL.utf8'. Я прочитал в документации PostgreSQL, что:

На всех платформах доступны параметры сортировки с именами default, C и POSIX. Дополнительные параметры сортировки могут быть доступны в зависимости от поддержки операционной системы.

Однако можно ли заставить Windows поддерживать эту локаль? Я имею в виду патч, плагин или что-то.

Ответы:


7

В Windows вполне вероятно, что нужный языковой стандарт уже установлен, он просто назван по-другому, чем в Unix.

Например, приведенное ниже создание базы данных отлично работает для меня с PG9.1 на моей Windows XP, с ее языковым стандартом по умолчанию French_France.1252и без дополнительного языкового пакета, который я бы вспомнил.

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

Кроме того, быстрая проверка порядка сортировки, отправив этот запрос в UTF8 в этой недавно созданной базе данных:

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

похоже, выводит правильные результаты:

s
ś
x
y
z
ź
ż


Хммм ... может быть, вы правы ...
Mariooosh

1

Насколько я знаю, вы не можете заставить версию PostgreSQL для Windows поддерживать локали и параметры сортировки, не предлагаемые Windows. PostgreSQL использует системную локаль и поддержку сопоставления. Если система не поддерживает его, вы не сможете его использовать. Иногда это разочаровывающее ограничение, но как оно есть. Вам нужно выбрать подходящую кодировку и параметры сортировки, поддерживаемые вашей установкой Windows.

Если вы хотите pl_PL.utf8присвоить псевдоним операционной системе имя и назвать его, вы можете сделать это с CREATE COLLATION.

См. Поддержка набора символов , Поддержка сортировки и таблица каталога pg_collation .

Какую проблему вы пытаетесь решить с этим?


"Нет" Ты имеешь в виду, что в Windows это никак не поддерживается? Может быть, я могу установить что-то, чтобы это работало. Мне нужно , что LC_COLLATE, LC_CTYPEустанавливается 'pl_PL.utf8'актуальной сортировка.

@marioosh Вам нужно выяснить, какой эквивалентный языковой стандарт Windows вам нужен с правилами сортировки. На мой взгляд, это немного бородавка; Мне бы очень хотелось, чтобы Pg предоставил хотя бы дополнительную поддержку внутренней сортировки / кодирования, вместо того, чтобы полагаться на поддержку ОС. Ответ дополнен ссылкой на документацию.
Крейг Рингер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.