案例一
问题描述:ERROR: could not read block 0 in file "base/2310725/2944204": read only 0 of 8192 bytes
问题分析:数据库文件损坏导致数据库无法正常登录查询
解决方案:重新初始化整个数据库索引。命令如下【reindexdb -p 5433 --system dbname】
命令执行成功之后即可正常访问数据库操作,接下来针对对应的错误提示处理即可。
案例二
问题描述:failed: ERROR: catalog is missing 2 attribute(s) for relid 4777469
问题分析:数据库缺失对象,导致无法查询,dump操作。
解决方案:
1、select oid,* from pg_class where oid = 4777469;
select * from pg_attribute where attrelid = 4777469;
2、根据sql查询哪个对象有问题。
3、处理对应对象。(本次问题中问题操作为临时表,业务意义不大,直接进行了元数据删除即可恢复数据库访问查询:delete from pg_class where relname ='表名')。
案例三
问题描述:missing chunk number 0 for toast value 4777899 in pg_toast_2619
问题分析:对应数据表的某一条记录损坏有问题,删除对应记录即可。
解决方案:
1、select oid,* from pg_class where oid = 2619;
2、根据sql查询对应数据表。
3、依据分页定位有问题的数据记录,delete from table where fid=具体id;
4、删除记录即可恢复对数据表的操作。
案例四
问题描述:ERROR: index "xx" contains unexpected zero page at block 5018
问题分析:索引异常。
解决方案:
1、reindex index xx;
2、根据sql重建索引即可。
推荐阅读