需要删除900多个postgres模式,但它要我先进行清理

时间:2018-06-22 16:30:00

标签: postgresql postgresql-9.3

我想删除900多个postgres模式(总共容纳40,000个表)。但是,似乎要我先清理所有内容,因为每当尝试删除模式时都会得到此信息。

ERROR:  database is not accepting commands to avoid wraparound data loss in database 

有没有一种方法可以删除大量模式而不必先进行清理?

3 个答案:

答案 0 :(得分:2)

运行vacuum命令是否存在任何问题。就像数据库的垃圾回收一样。我使用postgre数据库,并在执行任何主要工作(如备份或创建整个数据库的sql脚本)之前使用此命令。

VACUUM 回收死元组占用的存储。在普通的PostgreSQL操作中,被更新删除或过时的元组不会从表中物理删除。它们将保持存在,直到完成VACUUM。因此,有必要定期进行VACUUM,尤其是在频繁更新的表上。

答案 1 :(得分:0)

您有两种选择。进行清理,或删除整个数据库。必须避免绕开xid。

https://blog.sentry.io/2015/07/23/transaction-id-wraparound-in-postgres

答案 2 :(得分:0)

除了VACUUM删除数据库外,您无能为力。

此外,如果您不执行VACUUM,数据库将无法用于任何事情,而不仅限于您要删除的架构。