我有一个表,其中 Lat 和 Lng 字段为双精度。我已添加 POINT 字段,并尝试对表运行更新以创建点。这适用于大多数记录,但我在澳大利亚有一个点不起作用。
UPDATE points
SET point_4326 = ST_GeomFromText(CONCAT('POINT(', Lng, ' ', Lat, ')'), 4326)
WHERE point_id = 4601
数值为:纬度 = -33.484806894966 长=151.33459992068
收到的错误是:#3617 - 纬度 151.334600 超出函数 st_geomfromtext 的范围。它必须在 [-90.000000, 90.000000] 范围内。
我尝试过像这样直接输入值。
UPDATE points
SET point_4326 = ST_GeomFromText(CONCAT('POINT(', '151.33459992068', ' ', '-33.484806894966', ')'), 4326)
WHERE point_id = 4601
看起来它正在将 Lat 值视为 Lng。
我使用的是mySQL v8.0.35
确保 point_4326 是表中定义的 SRID 4326 的 POINT 类型,因为不同的 SRID 值可能会以不同的方式解释坐标。您的代码适用于 SRID 4326,因此如果您为 point_4326 选择了其他任何内容,请选择 SRID 4326。由于您将 POINT 命名为“point_4326”,您可能确实选择了它,但检查了两次。
如果一切正常,则尝试运行查询,但切换 Lng、Lat。如果没有显示错误,请执行 SELECT 查询以查看行 id 4601 并检查 Lng 和 Lat 值是否输入正确。如果是,请回复此问题,我们会解决的。