Postgresql“无法确定群集编码”

背景:我正在将一个系统从一台Ubuntu主机迁移到另一台主机,并且还有一个Postgresql数据库。 不幸的是,我无法再访问原来的服务器,我打算使用的备份文件已经损坏。

我一直在试图恢复目标服务器上的postgresql数据库(我有一个文件系统副本)的数据目录。 但是,每当我通过init.d启动Postgresql时,我都会收到错误消息:

无法确定群集编码

我已经search了这个错误消息,什么都没发现,而且我对Postgresql的了解还不够深入,无法确切了解是什么导致了这个问题。

原来的主机是Ubuntu 8.04,目标是9.10,并且都运行着从Ubuntu默认存储库安装的Postgresql 8.3。

任何洞察力,你可以告诉为什么这个错误可能会发生将不胜感激。

谢谢,

尼尔

经过多次的搔抓之后,我发现这个问题是由于主机系统是32位而目标系统是64位的。 由于Postgresql对每个版本的数据导向器进行了不同的编码,因此64位服务器无法加载32位数据目录。

为了解决这个问题,我简单地创build了一个单独的32位Ubuntu实例,并将数据目录复制到它。 一旦服务器启动并运行,我运行pg_dumpall来导出数据库,并将输出传送回目标机器加载。

我假设所有文件都由数据库超级用户的帐户正确拥有,并且权限是正确的?

什么在你的PG_VERSION文件中?

也许一个ls -lR会有帮助。