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
相关产品推荐
相关产品推荐

