【问题标题】:phpmyadmin, MariaDB 10 and Point columnsphpmyadmin、MariaDB 10 和 Point 列
【发布时间】:2021-12-01 10:06:45
【问题描述】:

尝试使用 PHPmyAdmin v5.1.1 在 MariaDB 中编辑表的列给我带来了麻烦。 它将列保存为二进制,我需要编辑整行才能将其编辑为文本。甚至这样做,在选择相应字段旁边的编辑/插入时,我会得到此复制:

'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

【问题讨论】:

  • 图形化?我无法理解你的问题
  • 我更新了问题
  • 我删除了 phpmyadmin 标签。这只是客户端程序。使用它就像在有关 Stack Overflow 的问题上使用 Firefox 标签,因为您使用该浏览器查看它。
  • 这个问题专门针对phpmyadmin。

标签: mysql phpmyadmin mariadb geospatial opengis


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您使用ST_PointFromText() 函数,您可以采用众所周知的文本WKT 格式输入您在示例中显示的文本。并将其转换为 Well-Known Binary WKB 格式,适合存储在表中的 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
    

    【讨论】:

    • 谢谢,但正如我所说,我也有办法使用查询来做到这一点。我想知道为什么最新版本的 PHPMyAdmin 不能通过用户界面来做同样的事情。
    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多