1

尝试使用 PHPmyAdmin v5.1.1 在 MariaDB 中编辑表的列给我带来了麻烦。它将列保存为二进制,我需要编辑整行才能将其编辑为文本。Even doing so, when choosing Edit/Insert next to the appropriate field, I get this copied:

'POINT(0 0)',0

但是,这与 MariaDB 10 不兼容。到目前为止唯一有效的是使用原始查询来更新字段,如下所示:

UPDATE `locations` SET `point` = POINT(1, 2) WHERE `locations`.`id` = 169;

我的问题是,有没有办法通过 PHPMyAdmin 的 UI 更新字段而不是运行手动查询?

试图更具体。这是该列在 PHPMyAdmin 中的样子:

这

这就是编辑行时的样子:

这

注意因为是WKB,所以不能直接编辑。但是,当添加到点字段时:

POINT(1, 1)

PHPMyAdmin 将其更改为:

'POINT(1, 1)'

它不起作用。

也需要逗号,否则 MariaDB 会抛出错误:

#1416 - Cannot get geometry object from data you send to the GEOMETRY field
4

2 回答 2

1

好吧,这看起来像是较新版本的 MySQL 和 MariaDB 的 PHPMyAdmin 中的错误。这篇最近的文章在这里描述了它

确实已经部署了一个修复程序,并将在PHPMyAdmin 5.1.2中提供

于 2021-10-12T23:29:53.950 回答
-1

如果您使用ST_PointFromText()函数,则可以采用您在示例中显示的 Well-Known Text WKT格式的文本输入。并将其转换为适合存储在表中的 WKB 格式列中的 Well-Known Binary WKB格式。像这样的东西。

UPDATE locations 
   SET point = ST_PointFromText('POINT(1 2)') 
 WHERE whatever

现代版本的MySQLMariaDB都有这个。

请注意,POINT(1 2)这两个数字之间没有逗号。在点之间使用逗号,就像这样。

LineString(1 1, 1 2, 2 2)

如果您想要 WKT(文本格式),请使用ST_AsText()。这将使基于文本的客户端程序可以显示您的几何数据。

SELECT ST_AsText(point)
  FROM locations
 WHERE whatever
于 2021-10-12T22:55:37.933 回答