Jos*_*urg 5 postgresql homebrew postgis macos-sierra
我刚刚升级了(使用Homebrew)我的postgreSql和postGis安装。我再也不能“酿造postgresql-upgrade-database”了(因为这告诉我我的数据是“错误:已从上一次尝试升级”;由于尝试失败,所以没有升级),并且按照手工的“ pg_upgrade”路线进行操作很好,直到处理'template1'数据库抛出一个
lc_collate values for database "postgres" do not match: old "C", new "en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)
错误。我没有创建该“ template1”数据库,因此如果可以某种方式覆盖字符串匹配要求,则它是消耗性的(如果不需要)。在此先感谢您的任何建议。
小智 11
只需更新排序规则和 ctype 编码?:
UPDATE pg_database SET datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='postgres';
对template1
&template0
也重复这个查询——或者如果你只有这三个数据库,你可以删除这个WHERE
子句。
与\l
.
您不清楚哪个数据库受到影响:postgres
或template1
。
要使用pg_upgrade
,新旧群集必须使用相同的语言环境进行安装。所以尝试
initdb --locale=C ...
Run Code Online (Sandbox Code Playgroud)
创建新集群。
template1
是必不可少的数据库–没有它,CREATE DATABASE
将会有问题。您还应该保留postgres
管理数据库。
如果两个数据库都具有不同的语言环境,则需要以相同的方式创建新集群,例如:
DROP DATABASE postgres;
CREATE DATABASE postgres
LC_COLLATE 'C' LC_CTYPE 'C'
TEMPLATE template0;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4160 次 |
最近记录: |