MySQL пространственная геометрия проверки WKT
В MySQL < 5.7 пространственные функции возвращали NULL при задании неверного WKT, например:
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 перед отправкой его в функции геометрии? В качестве альтернативы, есть ли параметр, заставляющий геометрические функции выдавать NULL, а не ошибку для неверного ввода?
1 ответ
MySQL предоставляет две функции для проверки правильности геометрии, но обе принимают уже сформированную геометрию в качестве входных данных.
ST_IsValid(ST_GeomFromText(?));
возвращает логическое значение
ST_Validate(ST_GeomFromText(?));
возвращает GEOM или ноль, если недействителен.
я ничего не знаю о том, что анализирует WKT в MySQL, и нет настройки, которая переключит его обратно на поведение <5.7.