Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mysqldump备份具有几何列的表?_Mysql_Geometry - Fatal编程技术网

使用mysqldump备份具有几何列的表?

使用mysqldump备份具有几何列的表?,mysql,geometry,Mysql,Geometry,我最近创建了一个MySQL表,其列类型为GEOMETRY 当我使用mysqldump备份表时,它会将我的geometry列作为带引号的字符串输出,其中包含一些转义字符,如\0,以及一些看起来像ASCII上限中原始二进制字节的字符 当我尝试将转储还原到另一个数据库时,它失败并出现错误: “无法从发送到几何体字段的数据中获取几何体对象” 我尝试将--hex blob添加到命令行中,但这不会更改输出或修复问题 我肯定有人没有在MySQL中创建数据类型,而忘记了包含一种备份方法。我错过了什么 谢谢。弗兰

我最近创建了一个MySQL表,其列类型为GEOMETRY

当我使用mysqldump备份表时,它会将我的geometry列作为带引号的字符串输出,其中包含一些转义字符,如\0,以及一些看起来像ASCII上限中原始二进制字节的字符

当我尝试将转储还原到另一个数据库时,它失败并出现错误:

“无法从发送到几何体字段的数据中获取几何体对象”

我尝试将--hex blob添加到命令行中,但这不会更改输出或修复问题

我肯定有人没有在MySQL中创建数据类型,而忘记了包含一种备份方法。我错过了什么


谢谢。

弗兰克,这似乎是mysqldump的一个长期(仍然存在)缺陷。看


作为一种解决方法,您可以使用ogr2ogr工具将数据导出到shapefile,然后将其导入回数据库。请参见

我可以确认,在MySQL工作台中使用导出/导入数据功能时不会出现此问题

在我的例子中,此错误特别出现在非空几何体列中的几何体值中

在我的例子中,空几何体是未知几何体的合法情况,因此我通过更改列以允许空值,然后运行
UPDATE。。。设置geom=NULL,其中为空(geom)

在此之后,我能够重新运行
mysqldump
,并成功地将生成的sql导入到一个单独的数据库中


(老实说,我不知道空几何体值最初是如何到达那里的-我甚至不知道创建空几何体值的语法)

我曾经遇到过这个问题,但通过使用gzip成功地通过了。请检查我的示例命令: 导出:

mysqldump -u root -p db_name | gzip > dump.sql.gz
pv dump.sql.gz | gunzip | mysql -u root -p other_db
导入:

mysqldump -u root -p db_name | gzip > dump.sql.gz
pv dump.sql.gz | gunzip | mysql -u root -p other_db

为什么gzip/gunzip会有帮助呢?我确认在我的情况下它是无用的