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



有许多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(:没有这样的文件或目录

正常运行时间数据库 23 天。如何解决?

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

物理存储表的文件似乎丢失。您可以使用以下命令检查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');

它应该是不同的,希望包含所有必需的文件。

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

OPs SQL 似乎不包含对任何自定义过程语言函数的任何调用,因此这可能相关,也可能不相关,但此错误也可能由更改当前目录的过程语言函数引起。在这里看到我的另一个答案: https://stackoverflow.com/a/76653616/2239798

相关内容

最新更新