我在PostgreSQL中使用“encoding ='UTF8'”创建了一个数据库,并在其中加载了一些UTF8数据。选择工作正常,但是当我尝试做一个“WHERE UPPER(名称)=‘富’”,在查询时,我得到为什么我不能在PostgreSQL数据库中执行“upper()”?
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用户没有设置PGDATA环境变量,也没有我能找到的任何配置文件或shell脚本。
我的问题是当我做pg_dumpall时,然后恢复,它开始抱怨重复的函数定义等。 – 2009-01-18 11:40:34