mysql:插入GEOMETRY相关字段类型(point,linestring等)

对于mysql字段类型,point,linestring等相关空间坐标字段,我们在insert时可能会出现:1416 - Cannot get geometry object from data you send to the GEOMETRY field 等相关错误。这可能是insert语句写的不对,下面演示一下相关操作及对应结果。


CREATE TABLE `test` (
`id`  int(11) NULL DEFAULT NULL ,
`lstr`  linestring NULL DEFAULT NULL ,
`pt`  point NULL DEFAULT NULL 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_croatian_ci
ROW_FORMAT=COMPACT
;


字段‘lstr’ 是linestring类型,‘pt’是point类型。

直接贴出能正确插入的sql语句

对于linestring类型:

insert into test(id,lstr) values (1,POINTFROMTEXT('LINESTRING(10 15)'));   ----成功

insert into test(id,lstr) values (1,GeomFromText('LINESTRING(1 -1)'));    ----成功

insert into test(id,lstr)  values (1,'LINESTRING(10 15)');  ----失败
1416 - Cannot get geometry object from data you send to the GEOMETRY field

insert into test(id,lstr)  values (1,LINESTRING('11','12'));  ----失败    
1367 - Illegal non geometric ''11'' value found during parsing


对于point类型:

insert into test(id,pt)  values (1,POINTFROMTEXT('POINT(10 15)'));   ----成功

insert into test(id,pt) values (1,GeomFromText('POINT(1 -1)'));    ----成功

insert into test(id,pt)  values (1,'POINT(12 13)');     ----失败
1416 - Cannot get geometry object from data you send to the GEOMETRY field

insert into test(id,pt)  values (1,POINT('10','15')); ----成功



这里提一下,对于阿里云的rds数据库,point类型或者linestring类型可以通用。即在point字段能存linestring类型数据,在linestring字段能存point类型数据。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值