如何修复错误(#1416 – Cannot get geometry object from data you send to the GEOMETRY field)

了解导致 MySQL 错误 1416 的原因以及Cannot get geometry object from data解决办法。

如何修复错误(#1416 – Cannot get geometry object from data you send to the GEOMETRY field)

文章图片
我开始在 MySQL 中探索我从未在实际项目中使用过的新数据类型。由于MySQL 支持  Spatial 数据类型,因此将位置坐标存储到数据库表的 Point 类型列中似乎非常方便。在使用 PHPMyAdmin 插入表单(我想测试它的外观)插入新行这样简单的操作之后,可以使用如下所示的表单插入 Point 类型列的点:
如何修复错误(#1416 – Cannot get geometry object from data you send to the GEOMETRY field)

文章图片
Cannot get geometry object from data解决办法
填写表单并尝试插入记录后,以下生成的查询会出现此错误:
INSERT INTO `tableName` (`id`, `name`, `coordinates`) VALUES (NULL, 'My First Record', '\'POINT(40.71727401 -74.00898606)\',0')

此查询将抛出上述错误:1416 - Cannot get geometry object from data you send to the GEOMETRY field。发生这种情况是因为查询无效。为防止出现此异常,你需要修复查询以匹配 MySQL 或 MariaDB 的当前版本,那么如何修复错误Cannot get geometry object from data?
Cannot get geometry object from data解决办法:更正查询语法空间列中的数据需要存储为空间数据。这些值应以内部几何格式存储,但你可以将它们从 Well-Known Text (WKT) 或 Well-Known Binary (WKB) 格式转换为该格式。
在较新版本的 MySQL 中,使用 Point 插入查询将起作用:
INSERT INTO `tableName` (`id`, `name`, `coordinates`) VALUES (NULL, 'My First Record', POINT(40.71727401 -74.00898606))

由于 Point(X,Y) 函数基本上是一个精确数字的构造函数,不需要先转换为文本,因此速度更快。它还保证返回一个点或失败。
但是,对于旧版本的 MySQL 和 MariaDB,你将被迫使用速度较慢的 Well-Known text (WKT) 构造函数。在旧版本中,可以在没有前缀的情况下找到这些函数,因此只要它可用,请务必使用带有前缀的版本。  ST_    ST_ 
  • ST_GeomFromText(wkt, srid)  可以返回MySQL 支持的任何空间类型,可以用 WKT 表示。如果你想这样想的话,这会使其打字松散。       
  • ST_PointFromText(wkt, srid)来自知名文本  的强类型构造函数。  POINT
如何修复修复错误Cannot get geometry object from data?以下示例演示了如何通过将 WKT 值转换为其内部几何格式(如果ST_GeomFromText不可用,请GeomFromText改用)来将相同的数据几何值插入表中:
INSERT INTO `tableName` (`id`, `name`, `coordinates`) VALUES (NULL, 'My First Record', ST_GeomFromText('POINT(40.71727401 -74.00898606)', 0));

即使你不使用 SRID(空间参考系统 ID),你也可以在没有此值的情况下插入点:
INSERT INTO `tableName` (`id`, `name`, `coordinates`) VALUES (NULL, 'My First Record', ST_GeomFromText('POINT(40.71727401 -74.00898606)'))

【如何修复错误(#1416 – Cannot get geometry object from data you send to the GEOMETRY field)】快乐编码??!

    推荐阅读