MySQL 8.0中Polygon字段获取质心报错3055的解决方法
问题解决:Geometry byte string must be little endian错误
错误原因
你原SQL中多次嵌套ST_AsText和ST_GeomFromText的操作完全多余,且如果coordinates字段存储的是二进制WKB格式的几何数据,这种文本转换会丢失字节序信息,触发"Geometry byte string must be little endian"错误。
解决方案
根据coordinates字段的实际类型,选择以下修正后的SQL:
情况1:coordinates字段本身就是GEOMETRY类型
直接对字段调用ST_Centroid即可:
SELECT ST_Centroid(coordinates) FROM contract WHERE address = '0x44145867fA5c74Fa3fC9b7a8d6c495e40c6BB3ED' LIMIT 1
如果需要将质心结果转为文本格式,可套一层ST_AsText:
SELECT ST_AsText(ST_Centroid(coordinates)) FROM contract WHERE address = '0x44145867fA5c74Fa3fC9b7a8d6c495e40c6BB3ED' LIMIT 1
情况2:coordinates字段存储的是WKB二进制数据
需要显式指定小端序解析二进制数据:
SELECT ST_Centroid(ST_GeomFromWKB(coordinates, 'little endian')) FROM contract WHERE address = '0x44145867fA5c74Fa3fC9b7a8d6c495e40c6BB3ED' LIMIT 1
同样,如需文本格式结果:
SELECT ST_AsText(ST_Centroid(ST_GeomFromWKB(coordinates, 'little endian'))) FROM contract WHERE address = '0x44145867fA5c74Fa3fC9b7a8d6c495e40c6BB3ED' LIMIT 1
内容的提问来源于stack exchange,提问作者Boris K
相关产品推荐
相关产品推荐

