【发布时间】:2019-06-08 01:16:47
【问题描述】:
我有一些数据库使用 MySQL 中的 POINT 字段来存储几何数据。所有数据都以相同的方式添加:
GeomFromText( 'POINT( lat lng )' )
所有数据库备份和恢复都没有问题,除了一个。此数据库与其他数据库位于同一台服务器上,但位于单独的 CPanel 帐户中。
当我尝试恢复该数据库时,我收到此错误: "无法从您发送到 GEOMETRY 字段的数据中获取几何对象"
插入语句的一个例子是:
INSERT INTO `location` (`id`, `coords` , `new_coords`) VALUES
(1, '\0\0\0\0\0\0�a��[XJ@�˶x��', '\0\0\0\0\0\0�8z�%XJ@g�+����' ),
(3, '\0\0\0\0\0\0�n�w�/J@6���', '\0\0\0\0\0\0�n�w�/J@6���' ),
(4, '\0\0\0\0\0\0� ��@J@.����', '\0\0\0\0\0\0� ��@J@.����');
我检查了数据,当我运行这个查询时,它似乎都显示了有效的纬度和经度:
SELECT X( coords ) , Y( coords ) FROM location
一些记录返回 0 和 0。所以我尝试将它们更新为 NULL,但仍然得到相同的错误。
当我尝试导出时勾选或不勾选“以十六进制表示法转储二进制列”选项,我也会收到同样的错误。
是否存在可能导致此问题的设置,还是只是数据中的某些内容?
如果是数据,解决办法是什么?
提前致谢:)
这是使用 PHPMyAdmin 4.8.3 从 PHP 7.2.7 上的 Linux MariaDB 服务器 (10.1.37-MariaDB) 导出并使用 PHPMyAdmin 使用 PHP 7.2.10 导入到 WAMPServer 3.1.4 (10.3.9-MariaDB) 4.8.3. 请注意,这也不适用于 WAMPServer 3.0.8
【问题讨论】:
-
从哪个 mysql/mariaDB 版本备份?去?备份中导致错误的 SQL 语句是什么?
-
您好,感谢您的回复。我在上面添加了更多细节。 “来自” MariaDB 版本:10.1.37。 “至” WAMPServer 3.1.4 (10.3.9-Maria DB)。也不适用于似乎不使用 MariaDB 的 WAMPServer 3.0.8。上面是 MySQL 插入代码示例。
-
没有导出base64二进制数据的选项吗?在我看来,这就像编码或误解问题。也许 Windows 的 0 字节有问题。
-
有“以十六进制表示法转储二进制列”,但它在打开或关闭时不起作用。我已经重新保存了所有数据并且它有效,我将添加一个解决方案。
标签: mysql phpmyadmin database-restore