Azure Functions中.NET调用mysqldump返回错误码-1073741515问题求助
错误原因分析
退出码 -1073741515 转换为十六进制为 0xC0000135,对应Windows系统STATUS_DLL_NOT_FOUND错误,即mysqldump 8.x版本运行依赖的DLL文件未找到。
之所以Kudu终端可以正常运行、.NET Process调用失败,是因为两者的运行环境变量存在差异:
- Kudu SCM终端的环境变量
PATH包含了系统级VC++运行时的路径,可以正常加载mysqldump 8.x依赖的VC运行时库 - Azure Functions工作进程的运行环境被沙箱限制,默认
PATH未包含对应依赖库的路径,导致进程启动时直接加载失败
解决方案
方案1(最稳定):打包依赖DLL到同目录
将mysqldump 8.x依赖的VC++运行时DLL和可执行文件放在同一目录,无需依赖系统环境变量:
- 用Dependencies工具查看mysqldump.exe的依赖项
- 提取非系统核心的依赖文件,一般为
msvcp140.dll、vcruntime140.dll、vcruntime140_1.dll - 将上述DLL文件上传到
D:\home\site\wwwroot\mysqldump\win\目录下,和mysqldump.exe同级
方案2:手动配置进程环境变量
在启动进程前,手动给进程添加VC运行时的路径到PATH变量:
// 先在Kudu终端执行echo %PATH%获取实际的VC运行时路径,替换下方示例路径 startInfo.EnvironmentVariables["PATH"] += @";C:\Program Files\vc\redist\x64\Microsoft.VC142.CRT";
方案3:替换为纯.NET备份实现
放弃调用外部mysqldump进程,改用纯.NET实现的MySQL备份库,完全规避外部依赖问题,天然适配.NET 3.1和Azure Functions 3运行时。
mysqldump 5.7版本退出码2问题处理
退出码2一般为备份过程中遇到错误中断,可按以下步骤排查:
- 在mysqldump命令中添加
--log-error=D:\home\site\temp\dump_error.log参数,将错误日志写入文件 - 查看日志确认报错的具体表和错误原因,常见原因包括表数据损坏、账号缺少对应表的访问权限、遇到不支持的特殊字段类型
- 可添加
--force参数,让mysqldump跳过出错的表继续执行剩余备份逻辑
内容的提问来源于stack exchange,提问作者Sil
相关产品推荐
相关产品推荐

