Измените LC_CTYPE для использования в PostgreSQL и PostGIS - PullRequest
19 голосов
/ 02 декабря 2011

Итак, я иду по учебнику GeoDjango и застрял в этом сообщении об ошибке:

postgres@lucid32:~$ createdb -E UTF8 template_postgis
createdb: database creation failed: ERROR:  encoding UTF8 does not match locale en_US
DETAIL:  The chosen LC_CTYPE setting requires encoding LATIN1.

Я гуглил и читал некоторые документы по Ubuntu, но безрезультатно. Любая идея будет принята с благодарностью!

Я использую Vagrant Box lucid 32 по умолчанию для тестирования моей установки.

Ответы [ 5 ]

13 голосов
/ 02 декабря 2011

Лучше просто указать локаль для базы данных и определить кодировку. Так что используйте что-то вроде

createdb --locale=en_US.utf8 template_postgis
9 голосов
/ 27 ноября 2013

Требуются и -E UTF8, и --locale = en_US.utf8

$ createdb -E UTF8 -T template0 --locale=en_US.utf8 template_postgis
4 голосов
/ 03 июля 2013

Иначе, попробуйте это при входе в postgresql:

create database databse_name with owner database_owner encoding='UTF-8'lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
2 голосов
/ 22 марта 2012

посмотрите на это: https://askubuntu.com/questions/20880/unicode-in-postgresql-8-4/114922#114922

возможно, вам нужно сконфигурировать локаль, прежде чем создавать кластер

~#export LANGUAGE=en_US.UTF-8
~#export LANG=en_US.UTF-8
~#export LC_ALL=en_US.UTF-8
~#locale-gen en_US.UTF-8
~#dpkg-reconfigure locales
2 голосов
/ 02 декабря 2011

Вам необходимо установить языковой стандарт вашей операционной системы на любой совместимый с utf8 языковой стандарт.Запустите locale -a, чтобы получить список языков, которые вы можете использовать, а затем выполните что-то вроде update-locale LANG=en_US.utf8, заменив en_US.utf8 на любой язык, который вы хотите.

...