Lovesuper
@Lovesuper
pyhon, java, swift программист

Как установить utf8 локаль для postgresql?

При ините бд выдает приложение ошибку:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-6: ordinal not in range(256)
Когда пытаюсь создать бд в локалью utf8 выдает:
vagrant=# CREATE DATABASE rev ENCODING='UTF8';
ERROR: encoding UTF8 does not match locale en_US
DETAIL: The chosen LC_CTYPE setting requires encoding LATIN1.

В изначально английскую убунту я поставил ru_RU локаль, но все попытки переназначить локаль для postgres не привели к успеху.
  • Вопрос задан
  • 68815 просмотров
Решения вопроса 1
@whats
Сам долго с этим боролся.
Включаешь консоль
Удаляем старый кластер базы данных
pg_dropcluster --stop 9.1(версия кластера) main(имя кластера, получить можно pg_lsclusters)

Создаем новый кластер
pg_createcluster --locale de_DE.UTF-8 --start 9.3 main

При этом локаль должна быть установлена
dpkg-reconfigure locales
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
lesovsky
@lesovsky
System engineer and PostgreSQL DBA
к этому нужно еще добавить TEMPLATE = template0.

т.е. получится
CREATE DATABASE "имя_базы"
  WITH OWNER "postgres"
  ENCODING 'UTF8'
  LC_COLLATE = 'ru_RU.UTF-8'
  LC_CTYPE = 'ru_RU.UTF-8'
  TEMPLATE = template0;
Ответ написан
Комментировать
Попробуйте так:
CREATE DATABASE "имя_базы"
  WITH OWNER "postgres"
  ENCODING 'UTF8'
  LC_COLLATE = 'ru_RU.UTF-8'
  LC_CTYPE = 'ru_RU.UTF-8';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы