将Postgres.app 9.1升级到9.2,获取lc_collat e值与错误不匹配

Modified on: Wed, 31 Jul 2019 23:20:02 +0800

我正在Macbook Pro(我的开发机器)上升级Postgres.app,运行时遇到错误:

pg_upgrade -b /Users/foo/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d /Users/foo/Library/Application\ Support/Postgres/var-9.1/ 
           -D /Users/foo/Library/Application\ Support/Postgres/var

我得到的错误:

lc_collate cluster values do not match:  old "en_US", new "en_US.UTF-8"

如何更正此问题?

注意:我曾经Postgres.app运行9.1,但我覆盖了它。我应该阅读/遵循的指示是:升级Postgres.app 。所以旧的bin已经不见了,但我仍然有数据目录。相反,我下载了Postgres 9.1并将其安装在别处以使用bin目录升级并将我的数据移动到新的Postgres。

作者:,spong

最佳答案

由于我正在迁移数据并且不关心数据库中的任何新内容,我只是删除了那里的任何内容(当然你可以备份它以保证安全):

rm -rf ~/Library/Application\ Support/Postgres/var

并使用locale en_US创建一个新的,具有以下内容:

initdb --locale=en_US -D ~/Library/Application\ Support/Postgres/var

然后我刚刚进行了升级:

pg_upgrade -b ~/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d ~/Library/Application\ Support/Postgres/var-9.1/ 
           -D ~/Library/Application\ Support/Postgres/var

然后运行分析仪,一切都很好。

./analyze_new_cluster.sh

我与pgAdmin3连接,所有数据都应该是。

作者:Community,spong

相关问答

添加新评论