在MySQL< 5.7当给定无效的WKT时,空间函数返回NULL,例如:
mysql> select astext(geomfromtext('polygon()'));
+-----------------------------------+
| astext(geomfromtext('polygon()')) |
+-----------------------------------+
| NULL |
+-----------------------------------+
1 row in set (0.00 sec)
但是对于较新的MySQL,相同的输入给出了:
ERROR 3037 (22023): Invalid GIS data provided to function st_geometryfromtext.
在将WKT发送到几何函数之前,有没有办法检查WKT是否有效? 或者有一个设置来强制几何函数产生NULL而不是无效输入的错误吗?
答案 0 :(得分:1)
MySQL提供了两个功能来测试几何图形的有效性,但是都以已经形成的几何图形作为输入。
ST_IsValid(ST_GeomFromText(?));
返回一个布尔值
ST_Validate(ST_GeomFromText(?));
返回GEOM,如果无效,则返回null。
我对MySQL中的WKT解析没有任何了解,也没有设置可以将其切换回<5.7行为。