使用OpenServer时QT项目提示QMYSQL driver not loaded问题求助
解决QT中“QMYSQL driver not loaded”错误(OpenServer环境)
针对你遇到的问题,结合已完成的操作,补充以下关键排查和解决步骤:
1. 确认QT的MySQL驱动文件存在且匹配
- 找到QT安装目录下的
plugins/sqldrivers文件夹,检查是否有qsqlmysql.dll(Windows平台)及配套的qsqlmysql.lib。 - 重点:驱动的编译环境(MSVC/MinGW)、位数(32/64位)必须和你的QT项目编译套件、OpenServer中的MySQL版本完全一致。如果驱动缺失,需要自行编译或下载对应版本的驱动。
2. 复制MySQL依赖库到QT运行目录
从OpenServer的MySQL安装路径(通常为OpenServer/modules/mysql[版本号]/bin)中找到libmysql.dll,将其复制到:
- 你的QT项目的debug/release输出目录(直接和可执行文件同目录);
- 或者QT安装目录的
bin文件夹下。
仅添加系统路径可能因优先级问题导致加载失败,直接复制到运行目录是更可靠的方案。
3. 添加调试代码定位具体错误
在数据库初始化代码中加入调试输出,获取更详细的错误信息:
#include <QDebug> #include <QSqlDatabase> #include <QSqlError> // ... 你的数据库初始化代码 qDebug() << "可用驱动列表:" << QSqlDatabase::drivers(); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("你的数据库名"); db.setPort(3306); // 确认OpenServer中MySQL的实际端口,默认3306 db.setUserName("root"); db.setPassword("你的密码"); if (!db.open()) { qDebug() << "数据库连接失败:" << db.lastError().text(); }
运行后查看控制台输出,除了“driver not loaded”,通常会提示具体的依赖缺失(如找不到某dll)或配置错误。
4. 验证OpenServer的MySQL服务状态
- 确保OpenServer中的MySQL服务已启动,通过自带的phpMyAdmin或其他MySQL客户端测试连接,确认主机名、端口、用户名、密码的正确性。
5. 检查项目编译配置
- 确认
.pro文件中QT += sql已正确添加,并且执行过qmake后重新编译项目,避免配置未生效。 - 检查QT项目的编译套件(Kit)位数:若OpenServer使用64位MySQL,QT必须对应使用64位编译套件,反之亦然。
结合你提供的截图补充排查点
- mainwindow.cpp截图:检查驱动名是否拼写为
"QMYSQL"(注意大小写,不能写"MYSQL"); - .pro文件截图:确认
QT += sql无拼写错误; - MySQL界面截图:确认目标数据库存在、服务处于运行状态;
- 系统路径截图:确认添加的MySQL路径正确,但仍建议优先采用复制
libmysql.dll到运行目录的方案。
内容的提问来源于stack exchange,提问作者Foksen
相关产品推荐
相关产品推荐

