2014-02-28 57 views
0

我正試圖在mysql數據庫中插入一個多邊形形狀。多邊形形狀的頂點由雙值組成。要插入我嘗試過的查詢的值。但我得到以下作爲我的錯誤。無法在Mysql5.6中存儲空間數據類型的double值

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))); 

TABLE說明

+------------------------+--------------+------+-----+---------+----------------+ 
| 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 |    | 
+------------------------+--------------+------+-----+---------+----------------+ 

該錯誤:_:

ERROR 1367(22007):解析

問候過程中發現的非法非幾何'10 0.12345612341243' 值, ArunRaj。

回答

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)如果它是一個多邊形的形狀。 形狀必須關閉(開始和結束點應該是相同的)。 這是問題所在。

工作QUERY

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)))); 
相關問題