pg_upgrade:" lc_collat​​e数据库" postgres"不匹配"

时间:2018-02-04 19:48:34

标签: postgresql homebrew postgis macos-sierra

我刚刚升级(使用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'数据库,如果它以某种方式可以覆盖字符串匹配要求,它是可消耗的(如果不是以某种方式需要)。提前感谢任何建议。

2 个答案:

答案 0 :(得分:4)

您不清楚哪个数据库受到影响:postgrestemplate1

要使用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'