Невозможно сохранить двойное значение для пространственного типа данных в Mysql5.6

Я пытаюсь вставить форму многоугольника в базу данных mysql. Вершины многоугольников состоят из двойных значений. Чтобы вставить значение, которое я пробовал со следующим запросом. Но я получил следующее как мою ошибку.

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(10.12345612341243,11.12345612341234),LineString(10.34512341246,11.4123423456),LineString(10.31423424456,11.34123423456),LineString(10.341234256,11.3412342456),LineString(10.11423423456,11.123424)));

ОПИСАНИЕ ТАБЛИЦЫ

+------------------------+--------------+------+-----+---------+----------------+
| Field                  | Type         | Null | Key | Default | Extra          |
+------------------------+--------------+------+-----+---------+----------------+
| PRD_GEO_REGION_ID      | int(11)      | NO   | PRI | NULL    | auto_increment |
| OWNER_ID               | decimal(3,0) | NO   |     | NULL    |                |
| GEO_REGION_NAME        | varchar(50)  | NO   | UNI | NULL    |                |
| GEO_REGION_DESCRIPTION | varchar(70)  | YES  |     | NULL    |                |
| GEO_REGION_DEFINITION  | geometry     | YES  |     | NULL    |                |
+------------------------+--------------+------+-----+---------+----------------+

ОШИБКА :_:

ОШИБКА 1367 (22007): во время синтаксического анализа обнаружено недопустимое негеометрическое значение "10.12345612341243"

С уважением, Арун Радж.


person ArunRaj    schedule 28.02.2014    source источник


Ответы (1)


Решил проблему. Десятичное значение успешно сохранено. Я сделал две ошибки.

1) LineString может хранить только тип данных Points (не десятичные значения или координаты). Далее следует исправленный синтаксис.

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(POINT(10.12345612341243,11.12345612341234)),LineString(POINT(10.34512341246,11.4123423456)),LineString(POINT(10.31423424456,11.34123423456)),LineString(POINT(10.341234256,11.3412342456)),LineString(POINT(10.11423423456,11.123424))));

2 ) Если это форма многоугольника. Фигура должна быть замкнутой (начальная и конечная точки должны совпадать). Это и было проблемой.

РАБОЧИЙ ЗАПРОС

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(POINT(10.12345612341243,11.12345612341234)),LineString(POINT(10.34512341246,11.4123423456)),LineString(POINT(10.31423424456,11.34123423456)),LineString(POINT(10.341234256,11.3412342456)),LineString(POINT(10.12345612341243,11.12345612341234))));
person ArunRaj    schedule 05.03.2014