我与
CATALOG_VERSION_NO
有冲突。 Postgresql 15.4 和 pg_control 报告集群是使用版本 202307071 初始化的,但服务器是使用 202209061 编译的。PG_VERSION
包含 15。Postgresql 16.0 报告数据库是使用版本 15 创建的,将 PG_VERSION
更改为 16 会创建一组新的错误。
有没有一种方法可以在不丢失数据的情况下解决这个冲突?
FATAL: database files are incompatible with server
DETAIL: The database cluster was initialized with CATALOG_VERSION_NO 202307071, but the server was compiled with CATALOG_VERSION_NO 202209061
是的,目录版本意味着主要版本(如果目录版本位于与主要版本相关的版本之间,则意味着您正在使用数据库的某些开发版本,例如每日版、测试版或候选版。但那是此处情况并非如此)。您尝试启动服务器时使用的二进制文件似乎是 v15。数据目录显然是由 v16 初始化的。
但是,如果只是这样,您应该会收到用户友好的错误:
详细:数据目录是由 PostgreSQL 16 版本初始化的,与此版本 15.4 不兼容
您没有收到此消息的事实表明您已经发生了某种腐败行为。但仅凭这一点我们无法知道腐败有多严重。
最简单的解释是它是一个 v16 数据库,但不知何故 PG_VERSION 被更改为 15。但是:
将 PG_VERSION 更改为 16 会产生一组新错误。
显然这个简单的案例并不是所发生的事情。您遇到的这些错误是什么?此时,您应该争先恐后地寻找您可能拥有的所有备份,并确保您拥有它们的只读副本,这样您就不会意外地破坏您拥有的唯一副本(当人们惊慌失措)。