我在 mySQL Workbench 中尝试将 .sql 文件(由 phpMyAdmin 生成)中的数据转储导入 mySQL(服务器管理>数据转储>从磁盘导入),但它一直失败并显示以下输出:
10:47:14 恢复 C:\myfolder\localhost.sql ( )
运行:mysql.exe --host=127.0.0.1 --user=root --password=xxxxxxx --port=3306 --comments< C:\myfolder\localhost.sql
操作失败,退出代码 1
10:47:15 C:\myfolder\localhost.sql 导入完成
当我查看架构时,它看起来像是导入了 6 个表(50 多个)并且几乎没有数据。
勘误表:
- 似乎没有任何约束或关系船。所有数据都通过几个 DROP TABLE IF EXISTS 添加;创建表;INSERT INTO 系列具有硬编码值。
- 该文件有大量的大块。文件本身超过 400 MB。
- 当我手动检查文件的任何子句的效果是否有效时,我发现它被挂在带有非常大的硬编码块的 INSERT INTO sql 上。不确定这是否重要?
- 我还注意到一些块的长度大于 32768 块长度是否有上限?
我并没有完全解决这个问题的根本原因,但我找到了问题的根源。我有一张非常大的附件表,其中包含 INSERT VALUES。我删除了此表,然后尝试仅作为 SQL 脚本运行。但是我遇到了一个新错误(我现在就忘记了。)谷歌搜索新错误告诉我脚本太长而无法在不增加 max_allowed_packet 变量的情况下运行。将其设置为非常大的数字允许脚本运行。
您的数据库中是否有任何外键约束?如果您这样做,您必须确保按照允许强制执行外键的顺序导入表。如果您尝试创建一个具有引用尚未创建的表的外键的表,您将收到此类错误。如果这是问题所在,您要么必须操作转储文件以使其以“正确”顺序获取,要么必须重做转储,一次一张表,顺序可以接受。我有一个为我的数据库执行此操作的脚本,但我从未尝试通过 phpMyAdmin 执行此操作。