我在Postgres数据库中有一张表,用于测试环境,在其中需要同时添加和删除多个列。问题是Postgres最多只支持1600列,这个计数包括已删除的列。我的表永远不会有1600个“未删除”的列,但随着时间的推移,它累积的列数超过了1600个。
我尝试过使用VACUUM和VACUUM FULL,并尝试将现有列重新设置为其自身类型(ALTER TABLE table ALTER COLUMN anycol TYPE anytype),以使Postgres扫描所有列并清理已删除列的内存,但这些方法都不能重置Postgres的“列数”。
我知道可以通过复制整个表来解决这个问题,但这样做也存在问题,并且是另一个问题。
你知道有什么办法让Postgres忘记已经删除的列吗?
我知道Postgres并不是为这样的应用程序设计的,但我不想深入讨论我们为什么选择以这种方式实现它。如果你有其他工具可用,我会很感兴趣听听,但我仍然希望找到解决这个问题的方法。
我尝试过使用VACUUM和VACUUM FULL,并尝试将现有列重新设置为其自身类型(ALTER TABLE table ALTER COLUMN anycol TYPE anytype),以使Postgres扫描所有列并清理已删除列的内存,但这些方法都不能重置Postgres的“列数”。
我知道可以通过复制整个表来解决这个问题,但这样做也存在问题,并且是另一个问题。
你知道有什么办法让Postgres忘记已经删除的列吗?
我知道Postgres并不是为这样的应用程序设计的,但我不想深入讨论我们为什么选择以这种方式实现它。如果你有其他工具可用,我会很感兴趣听听,但我仍然希望找到解决这个问题的方法。
VACUUM
。那么VACUUM FULL
呢?或者尝试使用ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
,将列更改为它已经拥有的相同类型。 - Wayne Conrad