PostgreSQL错误:无法打开文件“ base / ... / ...”

时间:2018-07-04 13:54:03

标签: linux postgresql

有许多queue_promotion_n表,其中n为1到100。 用一个非常简单的查询在73表上出现错误

SELECT count(DISTINCT queue_id)
FROM "queue_promotion_73"
WHERE status_new > NOW() - interval '3 days';
  

错误:无法打开文件“ base / 16387 / 357386324.1”(目标块   200005):没有这样的文件或目录

正常运行时间DB为23天。如何解决?

1 个答案:

答案 0 :(得分:0)

  1. 检查您是否具有最新备份(或验证数据库副本是否同步)
  2. PostgreSQL wiki建议将数据库和rsync全部所有PostgreSQL文件停止到安全位置。

物理上存储表的文件似乎丢失。您可以使用以下方法检查PostgreSQL在磁盘上的数据存储位置:

SELECT pg_relation_filepath('queue_promotion_73');
 pg_relation_filepath 
----------------------
 base/16387/357386324
(1 row)

如果您确定硬盘驱动器/ RAID控制器工作正常,则可以尝试重建表。最好先对数据库的副本或备份快照进行尝试。

VACUUM FULL queue_promotion_73;

再次检查关系路径:

SELECT pg_relation_filepath('queue_promotion_73');

应该不同,希望所有必需的文件都可以。

原因可能与硬件问题有关,请确保检查数据库一致性。