我正在mysql 8上尝试以下插入查询。
Insert Into fence Set
fenceName='aa',
radius=2,
fenceGeometry=ST_GeomFromText('POINT(102.1893310546875 3.880696482497261)', 4326)
它在 mysql 5.7 上完美运行,但在 mysql 8 中我得到了这个error Latitude 102.189331 is out of range in function st_geomfromtext. It must be within [-90.000000, 90.000000].
根据一些建议,我也这样做了。
ALTER TABLE fence MODIFY fenceGeometry geometry NOT NULL SRID 4326;
但它给了我同样的结果。
那是因为在 MySQL 8 上,他们做了不可思议的事情并实现了做地理坐标的愚蠢方法(如 MySQL)。这破坏了向后兼容性。
有趣的是,拥有 MySQL 的 Oracle 并没有在 Oracle Spatial 上这样做。Oracle Spatial 和 PostGIS 始终如一
(long,lat)
。要解决此切换的顺序,而不是但是这个,
在 MySQL 5.x 中没有真正的地理坐标系。
边注
如果您有可以使用的积分,则不应为此使用 WKT
Point()
,并且ST_SRID(pt,SRID)
更多信息
有关更多信息,另请参阅,
允许向后兼容的最新答案是提供附加参数来强制排序。
例如
所以你的查询会是这样的。