mysql:插入GEOMETRY相关字段类型(point,linestring等)
2017-12-18 20:02
627 查看
对于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类型数据。
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类型数据。
相关文章推荐
- mysql insert 空字符报错 double类型字段插入空字符串时自动转为0
- mysql日期类型字段插入与读出
- Mysql字段类型设计相关问题!
- Mysql复习--添加字段,删除字段,一次多行插入,修改字段名和类型,分组查询,建类似表,
- Mysql字段类型设计相关问题!
- Mysql 字段类型转化 和 时间类型相关处理
- mysql 日期类型字段相关运算
- 往Blob类型字段插入图片,使用与MySql或者Oracle
- 1292 - Incorrect datetime value: '' for column Mysql5.6 中datetime 类型字段的插入问题
- mysql修改字段的类型和相关属性
- mysql字段类型为int默认null,插入却显示0的解决办法,参考php代码
- mysql插入int字段可以使用单引号包含?今天改东西无意发现时间字段成int类型了,而且update这个字段用单引号包含,于是在MySQL上测试下能运行,求解
- java Timestamp类型插入Timestamp类型的mysql字段的问题
- MYSQL中SQL语句查询表字段名、注释、字段类型
- 关于mysql datetime类型的插入date类型的数据
- Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序总结
- MySQL字段类型说明
- mysql 数据库字段为 call 数据无法插入
- mysql插入date类型的值 .
- mysql、oracle、sqlserver根据对应的表查询表中的所有字段名称、类型、别名、长度等信息