加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 强制Postgres安装UTF8编码,而不是LATIN1?

发布时间:2020-12-13 16:34:58 所属栏目:百科 来源:网络整理
导读:我正在尝试在Vagrant盒子上设置CartoDB,following the instructions here.但是,它一直在失败,因为它抱怨Postgres已经安装了Latin-1编码. 我无法理解为什么Postgres会这样做,因为我明确强制所有本地设置为UTF8.这是我一直在做的事情: export LANGUAGE="en_US
我正在尝试在Vagrant盒子上设置CartoDB,following the instructions here.但是,它一直在失败,因为它抱怨Postgres已经安装了Latin-1编码.

我无法理解为什么Postgres会这样做,因为我明确强制所有本地设置为UTF8.这是我一直在做的事情:

export LANGUAGE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
locale
sudo apt-get update
sudo apt-get install -y python-software-properties
sudo add-apt-repository -y ppa:cartodb/gis
sudo add-apt-repository -y ppa:mapnik/v2.1.0
sudo add-apt-repository -y ppa:cartodb/nodejs
sudo add-apt-repository -y ppa:cartodb/redis
sudo add-apt-repository -y ppa:cartodb/postgresql
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install -y make unp zip libgeos-c1 libgeos-dev gdal-bin libgdal1-dev libjson0
sudo apt-get install python-simplejson libjson0-dev proj-bin proj-data libproj-dev postgresql-9.1

这是早期语言环境的输出,显示UTF8已成功设置:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

在运行上述所有命令后,当我检查Postgres的状态时,似乎Postgres仍然使用Latin-1编码安装:

sudo -u postgres psql -l

                         List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | LATIN1   | en_US   | en_US | 
 template0 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres

为什么会这样?如何强制Postgres使用UTF8编码安装自己?

这可能不是您正在寻找的答案,但这里有一些命令可用于将PostgreSQL切换到不同的语言环境(备份,重新创建集群和还原):
sudo -u postgres pg_dumpall > /tmp/postgres.sql
sudo pg_dropcluster --stop 9.1 main
sudo pg_createcluster --locale en_US.UTF-8 --start 9.1 main
sudo -u postgres psql -f /tmp/postgres.sql

如果您想知道安装使用Latin的原因,那么您可能需要深入了解安装脚本.但是如果en_US.UTF-8不是您的默认系统区域设置,那可能就是问题所在.安装脚本可以加载/ etc / default / locale.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读