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

MySQL 8中Polygon类型数据插入报错及ESRI参数传递问题

MySQL 8 Polygon插入报错及解决方案

我有一个MySQL 8表,其中包含类型为Polygon的coordinates列。执行以下INSERT语句时,出现column count doesn't match value count at row 1错误:

INSERT INTO contract (coordinates) 
VALUES (POLYGON(
(34.786166422784426, 32.162676265661624), 
(34.720248454034426, 32.01024096292725), 
(34.816378825128176, 31.973162105505374), 
(34.86993717473755, 32.1338371543335), 
(34.786166422784426, 32.162676265661624))
)

另外,以下语句可正常运行:

INSERT INTO contract (coordinates, smart_contract_version_id) 
VALUES (ST_GeomFromText('POLYGON((   34.786166422784426 32.162676265661624 , 34.720248454034426 32.01024096292725 , 34.816378825128176 31.973162105505374 , 34.86993717473755 32.1338371543335 , 34.786166422784426 32.162676265661624  ))', 4326), 1)

报错原因

MySQL的POLYGON()构造函数语法要求:多边形的点必须用双层括号包裹,且每个点的坐标之间用空格分隔,而非逗号。你当前的写法里,每个点单独用括号包裹,MySQL会将每个括号内的两个值识别为两个独立的列值,导致列数与值数不匹配,触发"column count doesn't match"错误。

正确格式化查询

有两种常用的正确写法:

方法1:使用POLYGON()构造函数

遵循双层括号+空格分隔坐标的语法:

INSERT INTO contract (coordinates) 
VALUES (POLYGON((
34.786166422784426 32.162676265661624, 
34.720248454034426 32.01024096292725, 
34.816378825128176 31.973162105505374, 
34.86993717473755 32.1338371543335, 
34.786166422784426 32.162676265661624
)))

方法2:使用ST_GeomFromText()

如果需要指定空间参考系(如4326),这种写法更清晰,也和你正常运行的语句逻辑一致:

INSERT INTO contract (coordinates) 
VALUES (ST_GeomFromText('POLYGON((
34.786166422784426 32.162676265661624, 
34.720248454034426 32.01024096292725, 
34.816378825128176 31.973162105505374, 
34.86993717473755 32.1338371543335, 
34.786166422784426 32.162676265661624
))', 4326))

显式传递ESRI参数

MySQL中处理ESRI格式的空间数据,需使用专门的函数或调整坐标顺序:

方法1:使用ST_GeomFromESRI()

ESRI格式采用纬度在前、经度在后的坐标顺序,与OGC标准相反,使用该函数可直接解析:

INSERT INTO contract (coordinates) 
VALUES (ST_GeomFromESRI('POLYGON((
32.162676265661624 34.786166422784426, 
32.01024096292725 34.720248454034426, 
31.973162105505374 34.816378825128176, 
32.1338371543335 34.86993717473755, 
32.162676265661624 34.786166422784426
))', 4326))

注意事项

转换ESRI格式数据时,必须确保坐标顺序正确,否则会出现空间位置偏移问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:05:23