본문 바로가기
Database

MySQL "Cannot get geometry object from data you send to the GEOMETRY field" 에러 해결방법

by jayden jayden-lee 2019. 5. 13.

임시 테이블 생성

id, geometry 두 개의 컬럼을 구성된 테이블을 생성한다.

CREATE TABLE `geo_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `geo` geometry DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

테이블에 geometry 타입 데이터 추가 (에러 발생)

아래 SQL 구문을 실행하면 "Cannot get geometry object from data you send to the GEOMETRY field" 에러가 발생한다. geometry 필드에 텍스트 값을 넣으려고 했기 때문에 발생한 에러이다.

INSERT INTO `geo_test`
VALUES (0,'POINT(1 1)'), 
       (1,'LINESTRING(2 1, 6 6)'), 
       (2,'POLYGON((0 5, 2 5, 2 7, 0 7, 0 5))')

ST_GeomFromText 함수를 사용해서 geometry 타입 데이터 추가

ST_GeomFromText 함수를 사용해서 Text 값을 Geometry 타입으로 변환해서 넣으면 에러 없이 성공적으로 수행된다.

INSERT INTO `geo_test`
VALUES (0,ST_GeomFromText('POINT(1 1)')), 
       (1,ST_GeomFromText('LINESTRING(2 1, 6 6)')), 
       (2,ST_GeomFromText('POLYGON((0 5, 2 5, 2 7, 0 7, 0 5))'));

댓글0