服务器崩溃后,Postgres 的一个或多个文件已损坏(至少目前,我认为这是由于崩溃而不是硬件故障造成的)。问题似乎仅限于一个相当大的表的某些行,因为我们在查询此表时遇到了段错误。我们尝试了 find_bad_row,但当服务器出现段错误时,它不起作用。如果我们可以删除受影响的行,那就没问题了,因为我们可以重新导入数据。
我目前正在运行一个脚本,它只是尝试逐行查询表:
select * from table where id = $1;
问题是,一旦我发现一个坏行,我该如何将其从数据库中删除?
从段错误恢复后,我们在日志中看到了如下几行内容:
record with zero length at 765/2C27A1C0
这与问题有关吗?
答案1
删除受影响的行有效。在这种情况下,对我来说已经足够好了。