所有 mysql 二进制文件(bin\*.exe
)都无言地退出。
运行 Windows Server 2016 作为主机。mcr.microsoft.com/windows/servercore
使用原生 Windows 容器在内部运行 docker 镜像。mysql-5.6.43-winx64.zip
在容器内解压。所有二进制文件均不起作用。例如,
c:\mysql\bin> mysqld.exe --help
c:\mysql\bin>
- 控制台上没有错误。
- Windows 事件应用程序、安全、设置、系统日志中均未提及“mysql”。(
wevtutil ... | findstr /i mysql
)。 dumpbin
从 Visual Studio 中使用来mysqld.exe
查看/imports
,即它需要哪些 DLL - 所有都存在于容器内。- 已尝试
bin\replace.exe
、bin\mysql.exe
等,结果均相同。 - 检查操作系统和 MySQL 二进制文件是否都是 x64 - 至少根据 Docker 镜像描述和 mysql 的 zip 名称,它们是的。
我很确定这与 MySQL 没有任何关系,因为我之前在其他程序中看到过这种行为,尤其是在 nanoserver 上。
我如何找出异常行为的原因?
谢谢。
答案1
这完全是由于缺少 DLL 造成的。当我说容器中存在所有 DLL 时,结果发现虽然 DLL 文件确实存在,但它们是错误的版本或构建或其他问题,具体来说msvcr100.dll
。