Как вставить точку в таблицу MySQL - PullRequest
0 голосов
/ 28 августа 2018

Я получаю ошибку mySQL, говорящую, что 'ADDRESS_LONGI_LATIT_LOCATION' не может быть нулем. Вероятно, что 'geomfromtext / pointfromtext' возвращает ноль. Что здесь не так? Любая помощь приветствуется.

INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',geomfromtext('Point(10.20.45 34.23.79)'))

Другой способ

INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',pointfromtext('10.20.45 34.23.79'))

1 Ответ

0 голосов
/ 29 августа 2018

Согласно спецификации ST_geomFromText() (geomfromtext() является устаревшим синонимом, его не следует использовать):

Если аргумент геометрии равен NULL или не имеет синтаксически правильной геометрии, или если аргумент SRID равен NULL, возвращаемое значение равно NULL.

Действительно, ваш аргумент синтаксически не правильно сформирован, так как каждая координата содержит две точки. Вы можете проверить это с помощью простого:

select geomfromtext('Point(10.20.45 34.23.79)')

Результат ( попробовать онлайн ):

(нуль)

Работает с одной точкой:

select geomfromtext('Point(10.2045 34.2379)')

Результат ( true онлайн )

AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA ==

То же самое относится к ST_PointFromText((), за исключением того, что вам все еще нужно использовать формат WKT , поэтому вам также необходимо использовать POINT():

select pointfromtext('point(10.2045 34.2379)')

Результат ( попробовать онлайн ):

* * AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA тысяча сорок-девять ==

В основном две функции одинаковы, за исключением того, что pointfromtext() обеспечивает точечный результат.

...