暂无图片
对pg执行pg_resetwal -f 操作,之后更新部分表的时候报错
我来答
分享
暂无图片 匿名用户
对pg执行pg_resetwal -f 操作,之后更新部分表的时候报错

对pg执行pg_resetwal -f 操作,之后更新部分表的时候报错:
ERROR: could not access status of transaction 936572956
DETAIL: Could not read from file "pg_subtrans/37D2" at offset 253952: read too few bytes.
CONTEXT: while updating tuple (9449,8) in relation "attribute_kv"

官方文档里说这种情况要是用pg_dump把操作后的数据库导出,恢复到一个新的数据库里,除了这种方法,各位朋友还知道其他方法吗,可以丢部分数据

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
数据库小学生

根据您提供的错误信息,"pg_resetwal -f" 操作可能导致某个事务的状态无法读取,进而在更新表时出现错误。如果您想尝试恢复数据库并且可以丢失部分数据,以下是一些备选方法:

  1. 使用pg_dump导出表数据:按照官方文档所述,使用pg_dump工具导出受影响的表数据,并将其导入到一个新的数据库中。这种方法可以确保备份和恢复过程中生成一致的数据。

  2. 手动删除受影响的行或记录:如果您知道特定表中的哪些行或记录导致了问题,您可以手动通过SQL命令删除这些行或记录。请谨慎操作,确保在删除之前先备份相关数据,以防止不可逆的数据丢失。

  3. 使用pg_rewind进行恢复:pg_rewind是一个用于 PostgreSQL 流复制中的工具,也可以用于数据库恢复。它可以将 PostgreSQL 数据目录回滚到指定时间点或特定WAL位置。您可以尝试使用pg_rewind来还原数据库的状态并解决错误。

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏