暂无图片
分享
2019-08-13
Could not open file pg_clog/0251

查询PostgreSQL一个表时,出现以下错误,帮忙看下是什么原因

select * from employee t

> ERROR:  could not access status of transaction 622198178

  DETAIL:  Could not open file "pg_clog/0251": No such file or directory.


收藏
分享
5条回答
默认
最新
joan

这个是事务记录文件,里面记录了事务的提交或回滚,如果丢失了此文件就无法判断事务的状态,一种解决办法是伪造此文件,然后全部使用提交的方式填充文件,建议最好再与你最近的备份文件进行数据对比。

暂无图片 评论
暂无图片 有用 0

怎样使用提交的方式填充文件呢

另外,可以查出文件丢失的原因吗

暂无图片 评论
暂无图片 有用 0
joan

一、首先对数据库进行全库物理备份;

二、用dd进行伪造这个数据块(数据块伪造全部提交),并且更改权限

for i in {1..262144}; do printf '\125'; done > 0251

chown postgres:postgres 0251

chmod 600 0251

mv -i 0251 $PGDATA/pg_clog/0251


至于怎么丢失的那要你们自己找原因了。


暂无图片 评论
暂无图片 有用 0

好的,感谢您的分析及提供的解决方案

暂无图片 评论
暂无图片 有用 0
joan
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏