暂无图片
PostgreSQL ERROR: found xmin 2146512304 from before relfrozenxid 2146512317
我来答
分享
有问题吗?
2023-08-23
PostgreSQL ERROR: found xmin 2146512304 from before relfrozenxid 2146512317

psql (10.12.X.9)
lisdb=# vacuum FREEZE pg_class
lisdb-# ;
ERROR: found xmin 2146512304 from before relfrozenxid 2146512317 有大佬遇见过吗? 重启和删除pg_internal.init 文件都不起作用

我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
redgame
2023-08-23
这是那个经典bug,什么版本?更新吧
暂无图片 评论
暂无图片 有用 0
打赏 0
陈陈
2023-08-23

可以通过两种方式进行修复

1.重启数据库,重启后会重新读入新数据内容到relcache中,相当于刷新relcache。

2.删除$PGDATA/global/pg_internal.init,这个文件就是存储的relcache的内容,有新的连接连入会创建新的pg_internal.init文件。

暂无图片 评论
暂无图片 有用 1
打赏 0
有问题吗?
2023-08-24

试过了,没啥用。 

暂无图片 评论
暂无图片 有用 0
打赏 0
My1492
2023-08-25

一个xmin(最事务ID)比relfrozenid(表的早冻结事务ID)还大的情况在PostgreSQL,当执行VACUUM操作,会将relxid设置为一个比当前活动事务都要小的值。如果VACUUM之前,已经有xmin比frozenxid大的事务存在,就会导致这个错误。

暂无图片 评论
暂无图片 有用 0
打赏 0
有问题吗?
2023-08-25

大佬,目前的情况是:

rowa:   xmin  100   relforzenid 120 , 

执行vacuum 报错:ERROR: found xmin 100 from before relfrozenxid 120 

update 原行后:

rowa:  xmin 140  relforzenid  120  

执行一次 vacuum 操作,vacuum执行成功

rowa: xmin 140  relforzenid   145

继续执行vacuum 报错。   ERROR: found xmin 140 from before relfrozenxid 145

就是不知道为啥在vacuum 操作后,会将relxid设置为一个比当前活动事务还要大的值? 大佬这个有了解吗?

暂无图片 评论
暂无图片 有用 0
打赏 0
胡飞
2024-04-09

在处理 PostgreSQL 中出现的 "ERROR: found xmin from before relfrozenxid" 错误时,重启和删除 `pg_internal.init` 文件通常不是解决此类问题的有效方法。这个错误通常意味着数据库中存在一些不一致的事务ID信息,可能需要更深入的排查和处理。以下是一些可能的进一步操作:

1. **手动执行 VACUUM 操作:** 尝试手动对受影响的表执行 VACUUM FULL 命令。这可以强制重新写入整个表并更新 relfrozenxid。但要注意,VACUUM FULL 可能会导致数据库锁定和性能下降,因此在生产环境中谨慎使用。

2. **分析日志文件:** 详细分析 PostgreSQL 的日志文件,查看是否有其他错误、警告或异常情况。这可以提供更多关于问题的线索,并有助于确定更进一步的解决方案。

3. **检查数据库完整性:** 使用 `pg_controldata` 工具检查数据库的一致性和完整性。这可能会提供有关数据库状态的更多信息,并可能提供修复数据库的建议。

4. **备份和恢复:** 如果其他方法都无效,并且数据的一致性和完整性受到严重威胁,可能需要考虑从最近的备份中恢复数据库。这将回滚数据库到备份时的状态,并可以解决潜在的数据一致性问题。

5. **PostgreSQL 社区支持:** 如果您仍然无法解决问题,建议向 PostgreSQL 社区寻求支持。在 PostgreSQL 官方邮件列表或论坛上提出您的问题,可能会得到更多专业的帮助和建议。

在执行任何操作之前,请务必备份数据库,以避免不可逆的损失。因为对数据库进行操作可能会对数据产生影响,尤其是在处理可能影响数据库一致性的问题时,更要谨慎行事。

暂无图片 评论
暂无图片 有用 0
打赏 0
有问题吗?
2024-04-09

解决了,把源码的可执行文件重新替换了一下。然后表更新XMIN后重新VACUUM。

暂无图片 评论
暂无图片 有用 0
打赏 0
梧桐
2025-03-13
搞定了就关闭吧
回答交流
Markdown


请输入正文
提交
相关推荐
postgresql中自定义函数 ||||的方式如何连接非文本变量?
回答 1
转换成文本变量就行了,比如'whereid'||pid::text或者'whereid'||cast(pidastext)
业务负载并不高,该怎么加速我的PostgreSQL数据库实例?请问我的PostgreSQL实例陆续接收了一千多个活跃连接,随着连接增加系统越来越慢了,但是业务负载并不高,该怎么加速我的PostgreSQL数据库实例?
回答 2
已采纳
这个问题适用其他数据库。但是这里你确定你的会话都是活跃?如果都是活跃,那你的CPU应用很忙。你是不是说的是会话在连接但是是休眠?非活跃?一般来说我们的数据库库TPS和QPS都不会过万。在这个基础上,活
pg中备库发给主库的信息中,已经写入的最新的wal数据和已经刷新的最新的wal数据,有啥区别?
回答 3
writelocation:表示WAL日志已经写入内存的位置,这些日志记录可能还未持久化到磁盘。flushlocation:表示WAL日志已经刷入磁盘的位置,这些日志记录已经持久化,确保数据不会丢失。
pg中过滤因子的选择,是过滤因子大好还是小好?
回答 2
id的过滤性为0.01,相当于100值个中有1个值符合条件。过滤性更好,所以在id上建索引性能更好。
pg怎么把数据表导出成Excel?
回答 2
COPYtestTO‘/home/postgres/testcopy.csv’WITHCSVheader;–将test表导出到/home/postgres/testcopy.csv
如何通过postgresql元表来查找表的索引是降序的?
回答 1
selectfrompgindexes;indexdef列可以看到valueDESC
从postgreSQL 11通过 pg_dump转储到 pg12,现在报错 pg_dump: warning: WITH OIDS is not supported anymore,怎么处理?
回答 1
从PostgreSQL11到PostgreSQL12的迁移过程中,你可能会遇到pgdump报错的问题,特别是涉及到WITHOIDS的情况。在PostgreSQL12中,WITHOIDS不再被支持,因此
postgreSQL可以设置用户只能看到数据库下面某一个表吗?
回答 2
你说的“看到”是啥意思1、使用\d显示所有表名?据说可以改系统表实现,没试过,觉得没必要2、还是selectfromxx ?单独grantselectonxxxtoabc
询问权限
回答 1
在PostgreSQL中,要授予用户对特定表的查询权限,语法如下:GRANTSELECT(columnname)ONtablenameTOusername;因此,正确的语句是:B.grantselec
postgresql有goto的语法吗?
回答 3
没有