VS Code中C++连接MySQL编译成功但无法运行问题求助
C++连接MySQL运行时直接终止的排查方案
核心排查步骤
添加错误详情输出:当前代码仅判断连接成败,未输出具体错误信息,这是定位问题的关键。修改代码,在初始化和连接失败时调用
mysql_error()获取错误日志:#include <iostream> #include <windows.h> #include "C:/Program Files/MySQL/MySQL Server 8.0/include/mysql.h" int main(){ MYSQL* conn; conn = mysql_init(0); if (!conn) { std::cout << "初始化失败: " << mysql_error(conn) << std::endl; return 1; } // 明确指定MySQL默认端口3306,避免自动检测异常 conn = mysql_real_connect(conn, "localhost", "root", "password", "project", 3306, NULL, 0); if(conn){ std::cout << "连接成功" << std::endl; mysql_close(conn); // 记得关闭连接,避免资源泄漏 } else { std::cout << "连接失败. 错误信息: " << mysql_error(conn) << std::endl; } return 0; }确认运行时动态库:编译成功不代表运行时能找到依赖库。Windows下需将MySQL的
libmysql.dll复制到程序可执行文件所在目录,或添加该文件路径到系统环境变量PATH。文件路径为C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.dll。检查MySQL服务状态:打开命令提示符,执行
net start mysql80(若服务名不同,可在系统服务列表中查找MySQL相关服务),确保MySQL服务处于运行状态。验证连接参数有效性:
- 确认
root用户的密码正确,注意大小写及特殊字符。 - 确认
project数据库已存在,可通过MySQL客户端执行SHOW DATABASES;查看。 - 确认
root用户允许本地登录,执行SELECT user, host FROM mysql.user WHERE user='root';,host字段应为localhost或%。
- 确认
编译命令优化
可在编译命令中指定输出文件名,方便后续运行:
g++ main.cpp -Wall -Werror -o main.exe -I "C:/Program Files/MySQL/MySQL Server 8.0/include" -L "C:/Program Files/MySQL/MySQL Server 8.0/lib" -lmysql
内容的提问来源于stack exchange,提问作者Yoqub Davlatov
相关产品推荐
相关产品推荐

