PostgreSQL에서 "encoding = 'UTF8'"을 사용하여 데이터베이스를 만들고 일부 UTF8 데이터를로드했습니다. 선택은 잘 작동하지만 내가 쿼리에서 "WHERE UPPER (이름) = 'FOO'을"는 작업을 수행 할 때, 나는 내 연구는 PostgreSQL을 설치했기 때문에이 있음을 나타내는 것으로 보인다왜 PostgreSQL 데이터베이스에서 "upper()"를 수행 할 수 없습니까?
ERROR: invalid multibyte character for locale
오류를 얻을 "initdb"는 LANG=en_US.UTF8
대신 LANG=en_US
으로 처리되었습니다. "SHOW LC_COLLATE
"이라고 표시하면 "en_US
"이 표시됩니다. 필자는 모든 데이터베이스를 덤프하고 다시 만들고 싶지는 않습니다. PostGIS 중 일부는 PostGIS이고 그 중 일부는 다시 작성해야하기 때문에입니다. UTF8에서 작동하는 "UPPER"와 동등한 작업을 수행 할 수있는 방법이 있습니까?
업데이트 나는 덤프, reinitdb을하고 결국, 데이터베이스의 복원, 그리고 내가 데이터를 이동하기로 한 곳은 파악 약간의 문제를 제외하고, 생각했던 것보다 덜 고통스러운했다 왜냐하면 postgres 사용자는 PGDATA 환경 변수를 설정하지 않기 때문에 내가 찾을 수있는 설정 파일이나 쉘 스크립트도 없습니다.
문제는 내가 pg_dumpall을 수행 할 때, 그리고 나서, 중복 된 함수 정의에 대해 불평하기 시작합니다. –
미래의 독자를위한 메모입니다. 스키마를 덤프하고 기존 스키마를 오버로드했기 때문에 가능성이있었습니다. 실제로 필요한 모든 것이 데이터 덤프/복원 (pg_dumpall이 아닌 pg_dump). y는, 당신이 언급 한 것처럼, 정말 덤프/initdb/복원 갈 방법이었다. – xzilla