导入数据库报MySQL error 2006: mysql server has gone away错误如何解决
问题根因
你遇到的是MySQL 8.0.27版本的已知内置bug,当导入包含FULLTEXT全文索引定义的SQL备份文件时,会触发InnoDB引擎的断言失败,导致mysqld进程直接崩溃退出,这才是你导入过程中出现连接断开、2006/2013报错的核心原因,和你已经调整的参数、PHP运行环境都没有关系。
解决方法
- 方案1:升级MySQL版本(最推荐)
该bug在8.0.28及之后的稳定版已经被官方修复,直接将当前的8.0.27版本升级到更高的稳定版即可解决问题。升级前请务必提前备份所有现有数据库数据,避免数据丢失。 - 方案2:临时移除SQL文件中的全文索引定义
如果暂时无法升级版本,可以先编辑要导入的SQL文件,删除所有FULLTEXT索引的创建语句,待整库导入完成后,再手动执行SQL语句创建对应的全文索引即可。 - 方案3:导出备份时跳过全文索引
如果还可以重新获取源库的备份文件,可以在使用mysqldump导出时加上--skip-full-text-indexes参数,导出的SQL文件就不会包含全文索引创建逻辑,导入时就不会触发该bug,导入完成后再手动创建全文索引即可。
验证
操作完成后可以先用小体积的备份文件做导入测试,确认mysqld不会崩溃后,再导入正式的业务库备份即可。
内容的提问来源于stack exchange,提问作者dee_tc
相关产品推荐
相关产品推荐

