升级Postgres.app 9.1到9.2,得到lc_collat​​e值不匹配错误

我正在升级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。

http://www.postgresql.org/docs/9.0/static/pgupgrade.html

初始化新的PostgreSQL集群

使用initdb初始化新集群。 再次使用与旧集群相匹配的兼容initdb标志。 许多预构build的安装程序会自动执行此步骤。 没有必要启动新的群集。

当你运行initdb时,确保–lc-collat​​e = locale与旧的db相同,例如“en_us”

由于我正在迁移数据,而不关心数据库中的任何新东西,我只是删除了那里的任何东西(当然,您可以将其备份起来以保证安全):

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

并创build一个新的语言环境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,所有的数据是应该的。