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

QT连接MySQL遇SSL connection error: unknown error number问题求助

解决QT连接MySQL的SSL连接错误

针对你遇到的SSL连接错误,这里有几个实用的解决方向:

1. 禁用SSL连接(本地连接优先尝试)

如果是连接本地MySQL服务器,通常不需要SSL加密。在数据库配置代码中添加禁用SSL的选项,放在db.open()之前:

void connectToDatabase() {
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("aditya");
    db.setUserName("root");
    db.setPassword("aditya");
    db.setPort(3306);
    // 添加这行禁用SSL连接
    db.setConnectOptions("MYSQL_OPT_SSL_MODE=DISABLED");

    qDebug() << "Hello4";
    if (!db.open()) {
        qDebug() << "Error: connection with database fail:" << db.lastError().text();
    } else {
        qDebug() << "Database: connection ok";
    }
}

2. 配置SSL证书(若服务器强制SSL)

如果你的MySQL服务器要求必须使用SSL连接,需要在代码中指定SSL证书路径:

db.setConnectOptions("MYSQL_SSL_CA=/path/to/ca.pem;MYSQL_SSL_CERT=/path/to/client-cert.pem;MYSQL_SSL_KEY=/path/to/client-key.pem");

替换上述路径为你实际的SSL证书文件路径,确保程序对这些文件有读取权限。

3. 检查驱动与服务器版本兼容性

QT的MySQL驱动版本和MySQL服务器版本不匹配也可能导致SSL连接异常:

  • 确认QT使用的libqsqlmysql.so(Linux)或qsqlmysql.dll(Windows)版本与MySQL服务器版本接近
  • 若驱动版本过旧,尝试升级QT的MySQL驱动组件

额外代码修复提示

你的executeQuery函数中,QSqlQuery没有关联到已连接的数据库,会导致查询失败。修改如下:

void executeQuery() {
    // 获取已连接的数据库实例
    QSqlDatabase db = QSqlDatabase::database();
    if (!db.isOpen()) {
        qDebug() << "Database not connected, cannot execute query";
        return;
    }
    QSqlQuery query(db); // 将查询与数据库实例关联
    if (query.exec("SELECT * FROM test")) {
        while (query.next()) {
            QString name = query.value("name").toString();
            qDebug() << "Name:" << name;
        }
    } else {
        qDebug() << "Query failed:" << query.lastError().text();
    }
}

内容的提问来源于stack exchange,提问作者aditya kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:45:29