ERROR: array size exceeds the maximum allowed (1073741823)

ERROR: array size exceeds the maximum allowed (1073741823)

我正在尝试溶解 table 个半径为 ST_Buffers 5 公里的多边形的边界,并将它们转储到另一个 table 中。第一个 table 包含大约 1000 万个多边形。 包含多边形的 table 是:

CREATE TABLE poly_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );

这是我要创建的 table:

CREATE TABLE buffer_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );

INSERT INTO buffer_5km(gid,bufferType,the_geog) VALUES (1,'test',(SELECT (ST_Dump(ST_Multi(ST_Union(ST_MakeValid(poly_5km.the_geog::geometry))))).geom::geography FROM poly_5km WHERE poly_5km.bufferType= 'test'));

但是每当我 运行 插入语句时,我都会收到此错误:

ERROR:  array size exceeds the maximum allowed (1073741823)

谁能告诉我我做错了什么?

您正在尝试存储超过 1GB 的长值。 PostgreSQL 对象 has 1GB limits - 您无法更改它。此限制在 32 位或 64 位平台上相同。所以你必须改变算法或粒度。