更改 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):没有此类文件或目录

PostgreSQL 库相关的操作

PostgreSQL 库相关的操作

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解决方法