我刚刚升级(使用Homebrew)我的postgreSql和postGis安装。我不能再酿造postgresql-upgrade-database' (因为它告诉我,我的数据是“错误:已经升级了以前的尝试;它没有,因为尝试失败了”,并且去了手册' pg_upgrade'路线很好,直到处理模板1'数据库抛出一个
lc_collate values for database "postgres" do not match: old "C", new "en_US.UTF-8"
错误。我没有创建那个' template1'数据库,如果它以某种方式可以覆盖字符串匹配要求,它是可消耗的(如果不是以某种方式需要)。提前感谢任何建议。
答案 0 :(得分:4)
您不清楚哪个数据库受到影响:postgres
或template1
。
要使用pg_upgrade
,必须使用相同的区域设置安装新旧群集。所以试试
initdb --locale=C ...
创建新群集。
template1
是一个必不可少的数据库 - 没有它,CREATE DATABASE
会有问题。您还应该保留postgres
管理数据库。
如果两个数据库具有不同的区域设置,则需要以相同的方式创建新的群集,例如:
DROP DATABASE postgres;
CREATE DATABASE postgres
LC_COLLATE 'C' LC_CTYPE 'C'
TEMPLATE template0;
答案 1 :(得分:2)
这对我有用。重复以下查询template1
& template0
以及
UPDATE pg_database SET datcollate='C', datctype='UTF-8' WHERE datname='postgres'