如何修复错误(#1416 – Cannot get geometry object from data you send to the GEOMETRY field)
了解导致 MySQL 错误 1416 的原因以及Cannot get geometry object from data解决办法。
文章图片
我开始在 MySQL 中探索我从未在实际项目中使用过的新数据类型。由于MySQL 支持 Spatial 数据类型,因此将位置坐标存储到数据库表的 Point 类型列中似乎非常方便。在使用 PHPMyAdmin 插入表单(我想测试它的外观)插入新行这样简单的操作之后,可以使用如下所示的表单插入 Point 类型列的点:
文章图片
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
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)】快乐编码??!
推荐阅读
- CapacitorJS如何生成Android应用图标和启动画面()
- Android Studio如何更新support repository
- 如何修复PHPMyAdmin错误(Incorrect format parameter(格式参数不正确))
- 如何创建自定义SVG图标系统(使用FontAwesome、Linearicons等)
- 如何使用Rembg机器学习去除图片的背景()
- 如何修复将JPEG图像保存到JFIF错误(解决办法)
- 如何修复VirtualBox错误(Call to NEMR0InitVMPart2 failed VERR_NEM_INIT_FAILED (VERR_NEM_VM_CREATE_FAILED))
- 如何解决Postman和Django 403 Forbidden Error: CSRF verification failed()
- 如何使用JavaScript轻松生成Beep(通知)声音()
- 如何解决Windows打字延迟问题(分步指南)