使用mysql.exe导入数据库报300秒最大执行时间超限错误
问题运行环境
- 操作系统:Win10
- 集成运行环境:XAMPP
- 数据库版本:10.4.24-MariaDB(mariadb.org 二进制发行版)
故障复现流程
- 执行
mysql -u user -p db命令登录目标数据库 - 登录后执行
source db.sql指令导入SQL备份文件 - 等待时长超过300秒后抛出如下报错:
Fatal error: Maximum execution time of 300 seconds exceeded in D:\xampp-2022-06-09
已确认排查信息
- 本次导入全程使用
mysql.exe命令行操作,全程未启动Apache服务,此前仅在使用phpMyAdmin时遇到过同类超时报错 - 报错信息中提到的
D:\xampp-2022-06-09是已废弃、未投入使用的旧版XAMPP安装目录 - 已逐一排查所有MySQL、PHP相关的ini配置文件,未找到配置300秒超时时长的对应参数
- 此前曾成功导入过同一份大型数据库备份,暂无法定位故障触发原因
故障根因与修复方案
原生MariaDB/MySQL命令行客户端为C语言编译程序,不可能抛出PHP级别的Fatal error。该问题本质是Windows系统PATH环境变量优先级错误,执行mysql命令时,系统优先匹配到旧废弃XAMPP目录下被PHP脚本包装过的mysql入口程序,而非原生客户端,包装脚本内硬编码了300秒的执行超时限制,因此排查ini配置文件无法找到对应参数。
按以下步骤操作即可修复:
- 打开新的命令行窗口,执行
where mysql查看系统识别到的所有mysql可执行文件路径,排在返回结果第一位的就是实际被调用的程序,大概率为旧XAMPP目录下的.bat/.cmd包装脚本,或被错误关联的可执行文件。 - 临时快速修复:直接使用当前在用XAMPP目录下的mysql.exe全路径执行导入操作,替换为自身实际安装路径即可,示例命令:
登录后再执行"D:\your-current-xampp\mysql\bin\mysql.exe" -u user -p dbsource db.sql即可绕开错误的程序指向,正常完成导入。 - 永久修复:打开Windows系统环境变量设置,在系统PATH列表中,将当前在用XAMPP的
mysql/bin目录路径移动到所有旧XAMPP相关路径的最前面,保存后重启命令行窗口即可。 - 可选清理操作:如果
where mysql查到首位匹配项是旧XAMPP目录下的.bat/.cmd包装脚本,可直接删除该废弃脚本,避免后续出现同类路径指向错误。
内容的提问来源于stack exchange,提问作者Heinz
相关产品推荐
相关产品推荐

