Win11下C++连接MySQL失败求助(错误码3)
MySQL Connector/C++ 连接错误(Error Code:3)排查与解决
可能原因与对应解决办法
1. 版本兼容性问题
Connector/C版本与MySQL服务版本不匹配会导致协议冲突,比如MySQL 8.0+搭配低版本Connector/C。
- 解决:卸载现有Connector/C++,下载与MySQL服务同大版本的官方包重新安装,确保编译链接的库和运行时加载的库版本一致。
2. 编译架构不匹配
Win11下Visual Studio的编译目标(x64/x86)若与Connector/C++库架构不一致,会引发运行时连接失败。
- 解决:在Visual Studio项目属性中,将平台工具集和目标平台设置为与Connector/C++库完全一致;同时检查系统环境变量中MySQL路径对应正确架构的库文件。
3. 连接字符串格式错误
Connector/C++的两种API(传统JDBC风格/X DevAPI)对连接字符串要求不同:
- 传统API:需使用
tcp://127.0.0.1:3306,且初始化sql::mysql::MySQL_Driver - X DevAPI:需使用
mysqlx://127.0.0.1:33060(默认X协议端口为33060),并通过mysqlx::Session建立连接 - 解决:根据使用的API类型修正连接字符串格式。
4. 网络拦截问题
Win11防火墙或第三方安全软件可能拦截了程序的网络请求,导致无法访问3306端口。
- 解决:临时关闭防火墙测试连接,若恢复正常则为程序添加入站/出站规则;检查第三方安全软件的拦截列表,排除你的编译程序。
5. MySQL配置限制
MySQL配置文件my.ini中bind-address若设置为特定IP,可能限制了程序的连接请求(即使DBeaver能连接也需排查)。
- 解决:打开配置文件,确认
bind-address = 0.0.0.0(允许所有IP访问),且无skip-networking配置项;修改后重启MySQL服务。
6. 运行时依赖缺失
编译正常但运行时出错,大概率是缺少Connector/C++的动态链接库(如mysqlcppconn8.dll或mysqlcppconn.dll)。
- 解决:将Connector/C++安装目录下的
bin文件夹路径添加到系统PATH环境变量;或直接将对应DLL复制到程序输出目录(Debug/Release文件夹)。
调试卡死处理
调试时卡死多因调试器无法跟踪release版本的Connector/C++库,缺少调试信息。
- 解决:下载Connector/C++的Debug版本库,在Visual Studio调试模式下链接Debug库;同时在项目属性中设置“调试信息格式”为
Program Database (/Zi)。
内容的提问来源于stack exchange,提问作者APi
相关产品推荐
相关产品推荐

