我在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