Postgresql:初始化和服务器编译的 CATALOG_VERSION_NO 不同

问题描述 投票:0回答:1

我与

CATALOG_VERSION_NO
有冲突。 Postgresql 15.4 和 pg_control 报告集群是使用版本 202307071 初始化的,但服务器是使用 202209061 编译的。
PG_VERSION
包含 15。Postgresql 16.0 报告数据库是使用版本 15 创建的,将
PG_VERSION
更改为 16 会创建一组新的错误。

有没有一种方法可以在不丢失数据的情况下解决这个冲突?

postgresql version catalog
1个回答
0
投票
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 会产生一组新错误。

显然这个简单的案例并不是所发生的事情。您遇到的这些错误是什么?此时,您应该争先恐后地寻找您可能拥有的所有备份,并确保您拥有它们的只读副本,这样您就不会意外地破坏您拥有的唯一副本(当人们惊慌失措)。

© www.soinside.com 2019 - 2024. All rights reserved.