You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL执行UPDATE更新时提示子查询返回多行错误如何解决

报错原因

你编写的UPDATE语句中,赋值右侧的子查询会返回admins_polygons表所有行的_geometry字段转换结果,多行值无法赋值给当前更新行的单个polygons字段,因此触发SQL state 21000报错。

解决方案

无需嵌套子查询,直接基于当前行的字段值做转换即可。推荐使用PostGIS原生的WKT转Geometry函数ST_GeomFromText,指定和你新建列匹配的SRID=4326,避免后续空间操作出现校验错误:

UPDATE admins_polygons 
SET polygons = ST_GeomFromText(_geometry, 4326);

如果坚持使用CAST语法,需要额外补充SRID设置,写法如下:

UPDATE admins_polygons 
SET polygons = ST_SetSRID(CAST(_geometry AS GEOMETRY), 4326);

提示:直接CAST转换得到的Geometry默认SRID为0,和你通过AddGeometryColumn创建的SRID=4326的列约束不匹配,即使更新成功后续也会触发空间字段校验错误,因此必须手动指定SRID。

内容的提问来源于stack exchange,提问作者polotepes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:15:03