2013-07-11 2 views
0

Я не вижу кириллических символов в PostgreSQL 9.1 на Linux Mint. Поэтому я хочу создать новый bd с кириллической кодировкой. Я говорю:Как установить кодировку в базу данных PostgreSQL?

CREATE DATABASE ekb_1 ENCODING 'CP1251' TEMPLATE postgistemplate; 

но получает ошибку:

postgres=# CREATE DATABASE ekb_1 ENCODING 'WIN1251' TEMPLATE postgistemplate; 
ERROR: encoding WIN1251 does not match locale ru_RU.UTF-8 
ПОДРОБНОСТИ: The chosen LC_CTYPE setting requires encoding UTF8. 

я пытаюсь добавить lc_type 'ru_RU.WIN1251', но не помогает.
Что не так?

ответ

2

Это может работать так:

CREATE DATABASE dbname ENCODING 'win1251' 
    lc_ctype='ru_RU.CP1251' 
    lc_collate='ru_RU.CP1251' 
    TEMPLATE template0; 

Если ru_RU.CP1251 локали не существует, создайте его с sudo locale-gen ru_RU.CP1251 (Ubuntu стиле, я предполагаю, что Монетный двор подобен в этом отношении) и перезапуска Postgres (он не выбирает новые локали динамически, а сообщение об ошибке запутывает).

В качестве шаблона принимается postgistemplate db только в том случае, если он имеет ту же самую кодировку, что маловероятно с учетом контекста. Предположительно, он находится в UTF-8.

В этом случае есть два варианта в теории, не уверен, если это практично:

  1. создать базу данных с template0, как указано в команде выше, а затем воспроизвести сценарий инициализации PostGIS внутри него.
  2. заново создать базу данных postgistemplate в кодировке win1251, предполагая, что она поддерживается postgis.

Лично я попытался бы решить проблемы с UTF-8, которые заставили вас попробовать другую кодировку в первую очередь и остаться с этой кодировкой.

+0

Спасибо за его работу! Кодировки снова ударили меня ( –

Смежные вопросы