我在 PostgreSQL 中使用“encoding = 'UTF8'”创建了一个数据库,并在其中加载了一些 UTF8 数据。选择工作正常,但是当我尝试在查询中执行“WHERE UPPER(name) = 'FOO'”时,出现错误
ERROR: invalid multibyte character for locale
我的研究似乎表明这是因为 PostgreSQL 安装是“initdb”,LANG=en_US
而不是LANG=en_US.UTF8
. 做一个“ SHOW LC_COLLATE
”显示“ en_US
”。我不想转储和重新创建我所有的数据库,因为其中有几个是 PostGIS,重新创建这些数据库非常痛苦。有没有一种解决方法,比如一种对 UTF8 有效的“UPPER”的等效方法?
更新 我最终完成了数据库的转储、reinitdb 和还原,它没有我想象的那么痛苦,除了因为 postgres 用户不知道数据应该去哪里有点问题t 设置 PGDATA 环境变量,我找不到任何配置文件或 shell 脚本。