首页 > 解决方案 > 为什么 MySQL 不接受 GEOMETRY 列的这个 WKT 值?

问题描述

我正在尝试将这个简单的 WKT 多点值转换为存储在我的 MySQL 数据库的 GEOMETRY 列中

select ST_GeomFromText('MULTIPOINT ((-72.92788350000001 41.308274), (-72.996283 41.355198))');

它返回空值。我不知道为什么 - WKT 本身似乎是有效的,例如,如果您在https://arthur-e.github.io/Wicket/sandbox-gmaps3.html查看它

那么 MySQL 方面的限制是什么,我该如何解决呢?谢谢。

如果重要的话,这是在 MySQL 5.6 上。

标签: mysqlgeospatial

解决方案


似乎 5.6 中的 MySQL 版本使用了另一种 WKT 格式。

在 MySQL 5.6 中,您需要使用MULTIPOINT (-72.92788350000001 41.308274, -72.996283 41.355198)offMULTIPOINT ((-72.92788350000001 41.308274), (-72.996283 41.355198))

MySQL 版本 5.6.40
参见演示
https://www.db-fiddle.com/f/mddtN7MBTwPmKz1UoDMqVA/8

MySQL 版本 8.0.11
来验证结果也很好,MYSQL 5.6 WKT 格式也适用于较新的 MySQL 版本。
见演示
https://www.db-fiddle.com/f/mddtN7MBTwPmKz1UoDMqVA/11

同样MULTIPOINT (-72.92788350000001 41.308274, -72.996283 41.355198),两者都在https://arthur-e.github.io/Wicket/sandbox-gmaps3.htmlMULTIPOINT ((-72.92788350000001 41.308274), (-72.996283 41.355198))上给出了相同的观点


推荐阅读