有许多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 天。如何解决?
- 检查您是否具有最新的备份(或验证您的数据库副本是否同步(
- 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