更改 LC_CTYPE 以供 PostgreSQL 和 PostGIS 使用
Posted
技术标签:
【中文标题】更改 LC_CTYPE 以供 PostgreSQL 和 PostGIS 使用【英文标题】:Change LC_CTYPE for PostgreSQL and PostGIS use 【发布时间】:2012-01-11 04:38:51 【问题描述】:所以我正在浏览 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 来测试我的设置。
【问题讨论】:
【参考方案1】:最好只指定数据库的语言环境并从中找出编码。所以使用类似的东西
createdb --locale=en_US.utf8 template_postgis
【讨论】:
我实际上最终做的是createb -E UTF8 -T template0 --locale=en_US.utf8 template_postgis--locale=en_US.UTF-8
从 PostgreSQL 9.4.5 开始【参考方案2】:
-E UTF8 和 --locale=en_US.utf8 都需要
$ createdb -E UTF8 -T template0 --locale=en_US.utf8 template_postgis
【讨论】:
【参考方案3】:否则,当你登录到 postgresql 时试试这个:
create database databse_name with owner database_owner encoding='UTF-8'lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
【讨论】:
加1用于添加模板0【参考方案4】:您需要将操作系统的语言环境设置为任何兼容 utf8 的语言环境。运行locale -a
以获取您可以使用的语言环境列表,然后执行update-locale LANG=en_US.utf8
之类的操作,将 en_US.utf8 替换为您想要的任何语言环境。
【讨论】:
【参考方案5】:看看这个: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
【讨论】:
以上是关于更改 LC_CTYPE 以供 PostgreSQL 和 PostGIS 使用的主要内容,如果未能解决你的问题,请参考以下文章
如何设置数据库的LC_COLLATE, LC_CTYPE, ENCODING, TEMPLATE
text Centos警告:setlocale:LC_CTYPE:无法更改区域设置(UTF-8):没有此类文件或目录
Debian下Cannot set LC_CTYPE to default locale: No such file or directory解决方法
Debian下Cannot set LC_CTYPE to default locale: No such file or directory解决方法