2014-02-28 2 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

문제가 해결되었습니다. 10 진수 값을 성공적으로 저장했습니다. 나는 두 가지 실수를 저질렀다.

1) LineString은 점 데이터 유형 (십진수 또는 좌표가 아님) 만 저장할 수 있습니다. 수정 된 구문은 다음과 같습니다.

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) 다각형 모양 인 경우. 모양을 닫아야합니다 (시작점과 끝점은 동일해야 함). 그게 문제였습니다.

WORKING 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)))); 
관련 문제