"encoding = 'UTF8'" で PostgreSQL にデータベースを作成し、そこにいくつかの 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、および復元を行うことになりましたが、思ったよりも簡単でした。 t は PGDATA 環境変数を設定し、私が見つけた構成ファイルやシェル スクリプトも設定しませんでした。