从工作台向 MySQL 8.0 中插入一个点

Posted

技术标签:

【中文标题】从工作台向 MySQL 8.0 中插入一个点【英文标题】:Inserting a point into MySQL 8.0 from workbench 【发布时间】:2019-12-05 21:31:20 【问题描述】:

我有一个名为“坐标”的列,类型为“点”。

这个查询:

update `my-db`.`community` 
set `coordinates`= POINT( 31.9931217, 35.2823115 ) 
where 'id' = 1;

返回以下错误:

无法从您发送到 GEOMETRY 字段的数据中获取几何对象

这里的正确格式是什么?

【问题讨论】:

坐标字段有空值吗 你有没有索引,可能是因为这个。 ***.com/questions/5875327/… id 已编入索引。除此之外没有什么。 【参考方案1】:

首先:'id' 不是有效的列名(这是一个字符串字面量)。作为一般提示,您应该避免引用列名,除非确实有必要(即,当名称包含特殊字符或以数字开头,或与保留字冲突时)。

除此之外,您的语法应该像described in the documentation 一样工作,并在this DB Fiddle 中测试。

您也可以try and use ST_GeomFromText(),如下:

update `my-db`.`community` 
SET `coordinates`= ST_GeomFromText('POINT(31.9931217 35.2823115)')
where `id` = 1;

【讨论】:

Point(x, y) 也应该返回一个点对象。见dev.mysql.com/doc/refman/8.0/en/… @Shadow:你是对的,我测试过......我相应地修改了我的答案。感谢您提供信息......以及我的答案的更新!【参考方案2】:

看起来正确的语法是

更新my-db.community SET coordinates=GeomFromText('POINT(31.9931217 35.2823115)') WHERE 'id' = 1;

试试看

【讨论】:

不,point(x, y) 也应该返回一个点对象。见dev.mysql.com/doc/refman/8.0/en/…

以上是关于从工作台向 MySQL 8.0 中插入一个点的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 中的 Mysql 8.0 安装错误

MySQL常见6个考题在实际工作中的运用

MySQL常见6个考题在实际工作中的运用

如何从 PHP 在 mySQL 中插入/创建存储过程?

无法从 MyODBC 链接访问 MySQL 8.0 INFORMATION_SCHEMA

如何删除 mysql workbench 8.0 中的检查约束?