尝试删除包含无效时间戳的元组
DELETE FROM comments WHERE date > '1 Jan 9999' OR date < '1 Jan 2000' OR date_found > '1 Jan 9999' OR date_found < '1 Jan 2000';
Run Code Online (Sandbox Code Playgroud)
结束于
ERROR: attempted to delete invisible tuple
Run Code Online (Sandbox Code Playgroud)
有一个 2009 年的邮件列表讨论了完全相同的错误消息,OP 修复了它,但我没有找到关于他是如何做到的或可能导致此错误的原因的解释。
由于谷歌搜索量不足以及我对 PostgreSQL 的了解有限,我很无助。
我在 Debian 8 上运行了 PostgreSQL 9.5.5 服务器(~4TB 数据,所有默认设置,内存限制除外),当时操作系统内核崩溃了——可能是在重建 /dev/md1 时交换所在的位置。在此之前,PostgreSQL 用一个 400GB 的日志文件吃光了几乎所有的磁盘空间。操作系统再也没有启动过,磁盘检查没问题,所以我从 LiveCD 启动并将每个块设备备份到映像,以防万一。我已经成功地从 /dev/md2 重建了 / 目录,fsck 显示了一个干净的文件系统,并且我已经将 PGDATA 文件夹备份到了一个外部硬盘上。
在我格式化 md 设备并重新安装操作系统和新的 postgresql-9.5 之后,我停止了 PostgreSQL 服务器,将 PGDATA 文件夹移动并更改为 …
postgresql recovery corruption disaster-recovery postgresql-9.5