我想丢弃 pg_largeobject 表的内容并回收其磁盘空间。当我尝试发出此命令时:
truncate pg_largeobject
我收到了这个回复:
ERROR: permission denied: "pg_largeobject" is a system catalog
即使我以用户 postgres (超级用户)发出命令。当表包含大量行时,没有足够的磁盘空间来执行 VACUUM FULL 。我还试图删除所有行以准备 VACUUM FULL ,但这仍然是一整天之后,最终被打断了。如果可能的话,我宁愿截断。
此表的截断是否可行?它目前包含我不再需要的大约1 TB的图像。我已从其他所有表中删除了对该表的引用(并删除了 pg_largeobject_metadata 中的所有行)。
答案 0 :(得分:2)
启用allow_system_table_mods
就是答案。然后截断只需要几分钟。感谢Nick Barnes提出此建议,并感谢old article确认了此方法。