【发布时间】:2010-10-02 01:42:10
【问题描述】:
我在 PostgreSQL 中使用“encoding = 'UTF8'”创建了一个数据库,并在其中加载了一些 UTF8 数据。选择工作正常,但是当我尝试在查询中执行“WHERE UPPER(name) = 'FOO'”时,我收到错误
ERROR: invalid multibyte character for locale
我的研究似乎表明这是因为 PostgreSQL 安装是“initdb”-ed 与 LANG=en_US 而不是 LANG=en_US.UTF8。执行“SHOW LC_COLLATE”会显示“en_US”。我不想转储和重新创建我所有的数据库,因为其中有几个是 PostGIS,重新创建这些数据库非常痛苦。是否有一种解决方法,例如一种对 UTF8 有效的相当于“UPPER”的方法?
更新我最终完成了数据库的转储、reinitdb 和还原,它没有我想象的那么痛苦,只是在确定数据的位置时遇到了一点问题应该去,因为 postgres 用户没有设置 PGDATA 环境变量,也没有我能找到的任何配置文件或 shell 脚本。
【问题讨论】:
标签: postgresql postgis