You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:05:55