如何在MySQL批处理(.bat)文件中捕获mysqldump错误并跳转处理
实现方法
批处理可以通过判断命令执行后的退出码%errorlevel%捕获mysqldump的执行错误,有两种常用写法都可以满足需求:
写法1:简洁的||跳转写法
直接在mysqldump命令后加|| goto error即可,命令执行失败时会自动跳转到错误分支:
@echo off set sql_bin_path=%MY_SQL% cd /d %sql_bin_path% :: 也可以给cd加错误判断,避免路径不存在时后续命令执行异常 if %errorlevel% neq 0 goto error mysqldump -u root -p --no-data test > test.sql || goto error pause goto :eof :error echo Something went wrong pause
写法2:显式判断退出码
如果需要在命令执行后、判断错误前做额外处理,可以显式读取%errorlevel%判断:
@echo off set sql_bin_path=%MY_SQL% cd /d %sql_bin_path% if %errorlevel% neq 0 goto error mysqldump -u root -p --no-data test > test.sql :: 退出码非0即代表执行出错 if %errorlevel% neq 0 goto error pause goto :eof :error echo Something went wrong pause
补充说明
mysqldump遇到数据库不存在、连接失败、权限不足、参数错误等所有异常场景时,都会返回非0的退出码,上述判断逻辑可以覆盖所有常规错误场景- 如果需要留存错误原因排查问题,可以把标准错误流也重定向到日志文件,修改命令为:
出错后可以查看mysqldump -u root -p --no-data test > test.sql 2> dump_error.log || goto errordump_error.log文件获取具体报错信息。
内容的提问来源于stack exchange,提问作者Sirop4ik
相关产品推荐
相关产品推荐

