更改LC_CTYPE以使用PostgreSQL和PostGIS

时间:2011-12-02 03:25:19

标签: postgresql locale postgis geodjango

所以,我正在浏览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.

我用Google搜索并阅读了一些Ubuntu文档,但无济于事。任何见解将不胜感激!

我使用默认的Vagrant Box lucid 32来测试我的设置。

5 个答案:

答案 0 :(得分:13)

最好只指定数据库的语言环境,并从中计算出编码。所以使用像

这样的东西
createdb --locale=en_US.utf8 template_postgis

答案 1 :(得分:9)

需要-E UTF8和--locale = en_US.utf8

$ createdb -E UTF8 -T template0 --locale=en_US.utf8 template_postgis

答案 2 :(得分:4)

否则,请在登录postgresql时尝试此操作:

create database databse_name with owner database_owner encoding='UTF-8'lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;

答案 3 :(得分:2)

您需要将操作系统的语言环境设置为任何与utf8兼容的语言环境。运行locale -a以获取可以使用的语言环境列表,然后执行update-locale LANG=en_US.utf8之类的操作,将en_US.utf8替换为您想要的任何语言环境。

答案 4 :(得分:2)

看看这个: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