phpmyadmin、MariaDB 10 和 Point 列

phpmyadmin, MariaDB 10 and Point columns

尝试使用 PHPmyAdmin v5.1.1 在 MariaDB 中编辑 table 的列给我带来了麻烦。 它将列保存为二进制,我需要编辑整行以便能够将其编辑为文本。即使这样做,在适当字段旁边选择Edit/Insert时,我都会复制此内容:

'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

如果使用 ST_PointFromText() function you can take Well-Known Text WKT format text input you show in your example. and turn it into the Well-Known Binary WKB 格式 suitable 用于存储在 table 中的 WKB 格式列中。像这样。

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

MySQL and MariaDB 的现代版本都有这个。

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

LineString(1 1, 1 2, 2 2)

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

SELECT ST_AsText(point)
  FROM locations
 WHERE whatever

好吧,对于较新版本的 MySQL 和 MariaDB,这看起来像是 PHPMyAdmin 中的错误。在这篇最近的文章 here

中对此进行了描述

确实已经部署了修复程序并将在 PHPMyAdmin 5.1.2

中可用