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

cczfrluj  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(155)

我与CATALOG_VERSION_NO有冲突。Postgresql 15.4和pg_control报告说,集群是用版本202307071初始化的,但服务器是用202209061编译的。PG_VERSION包含15。Postgresql 16.0报告说,数据库是用版本15创建的,将PG_VERSION更改为16会创建一组新的错误。
有没有一种方法可以在不丢失数据的情况下解决此冲突?

b4wnujal

b4wnujal1#

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

字符串
是的,目录版本意味着主要版本(如果目录版本介于与主要版本相关的版本之间,这意味着您正在使用数据库的某个开发版本,如日常版本、beta版本或候选版本。但这里不是这种情况)。您在尝试启动服务器时使用的二进制文件似乎是v15。数据目录显然是由v16初始化的。
然而,如果只是这样,你应该得到用户友好的错误:
数据目录是由PostgreSQL版本16初始化的,与此版本15.4不兼容。
事实上,你没有得到这个信息,这表明你已经有某种腐败在进行,但我们没有办法仅仅从这个知道腐败有多严重。
最简单的解释是,它是一个v16数据库,但不知何故PG_VERSION被更改为15。但是:
将PG_VERSION更改为16会创建一组新错误。
显然,简单的情况并不是发生的事情。你得到的那些错误是什么?在这一点上,你应该争夺任何备份,你可能有,并确保你有一个只读的副本,这样你就不会意外地损坏他们的唯一副本,你有(一个令人惊讶的常见事件时,人们恐慌)。

相关问题