文章目录
- 前言
- 解决方法1:使用mysql安装目录下已编译的驱动【不一定有效】
- 解决方法2:手动编译mysql【与所用的编译器匹配】
前言
- 对于刚接触Qt的开发者来说,连接数据库是一个令人头疼的问题,本人刚接触Qt时也遇到了很多坑,在连接mysql数据库问题上花费了两三天的时间才解决,本文记录解决Qt连接mysql的驱动问题,希望帮助更多开发者少走弯路!
- 如果觉得对你有帮助,不妨一键三连哈!
- 本文为博主的经验总结!部分操作参考了其他博主的文章,但由于时间有些久远,未有保存原文链接,有问题私信本人附上参考链接!
解决方法1:使用mysql安装目录下已编译的驱动【不一定有效】
由于mysql驱动对所有Qt版本都通用的,所以,此方法未必有效。之前测试过,Qt5.9 MSVC2017和mysql5.7有效,其他的无效
- 方法:将mysql的lib文件夹中的动态库复制到Qt对应编译器的bin目录下即可
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
error open database "Driver not loaded Driver not loaded"
解决方法2:手动编译mysql【与所用的编译器匹配】
- 方法:
- ①进入Qt源码的目录【安装Qt时需要选择安装source才有该目录】:D:\DevEnv\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
- ②修改mysql.pro文件
# 添加如下信息,并注释掉QMAKE_USE += mysql
INCLUDEPATH +="D:\DevEnv\mysql-8.0.23-winx64\include" # mysql头文件目录
LIBS +="D:\DevEnv\mysql-8.0.23-winx64\lib\libmysql.lib" # mysql库文件目录
DESTDIR = ../mysql/lib/ # 指定编译后输出位置
- ③编译
> 使用Qt 5.15.2 MinGW 64bit编译,生成的动态库只适合此编译器
- 出现了一个问题【此问题似乎可以不用管它】
- 解决办法,修改如下文件:
- 编译MSVC可能会出现:Qt之msvc-version.conf loaded but QMAKE_MSC_VER isn’t set
解决办法:在D:\DevEnv\Qt\5.15.2\msvc2019_64\mkspecs\common的msvc-version.conf配置文件中添加QMAKE_MSC_VER = 1900即可
- 再次编译,生成lib文件夹【MinGW和MSVC生成的文件不太一样】
- 复制lib文件夹的文件到
注意:此方法同样需要复制mysql/lib目录下的文件到Qt的bin目录下
- 连接测试
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("wordmemory");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();
if (ok) qDebug() << "连接数据库ok";
else qDebug() << "连接数据库失败";