QSqlDatabase连接MySQL数据库提示driver not loaded的解决方案
环境
VS2019
mysql Ver 14.14 Distrib 5.7.36, for Win64 (x86_64)
QT 5.15.2 及其源代码
报错
解决方案
1.检查是否有驱动qsqlmysql.dll,qsqlmysqld.dll
QT安装路径,不同编译器路径下的插件目录里,查找是否有MySQL的库(C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers),我这里查找,确实没有,因此需要自行编译。
2.查看网上的驱动编译解决方案,大部分大佬们都采用如下方式
找到QT的源码目录下,关于mysql的项目目录,通过QT打开mysql.pro文件的方式打开项目:
修改mysql.pro:
1)注释掉QMAKE_USE += mysql
,因为会提示找不到mysql;
2)添加MySQL的include目录,及其库目录;
3)设置目标生成文件的存储路径,方便自己查找。PS:我这边开始没设置路径,默认存储在了C:\plugins\sqldrivers目录下。
修改qsqldriverbase.pri文件:
1)注释掉include($$shadowed($$PWD)/qtsqldrivers-config.pri)
,因为找不到改文件;
2)添加 include(./configure.pri)
,PS:我这个版本里是这个文件configure.pri。
构建项目mysql:
前面指定的输出目录下,生成了驱动qsqlmysql.dll,qsqlmysql.lib。
3. 将驱动放置相关目录下,使其生效
1)将生成的.dll文件复制到C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers目录下:
2)将MySQL的库文件libmysql.dll复制到QT对应编译器的bin目录下,C:\Qt\5.15.2\msvc2019_64\bin:
至此,问题得以解决!
补充说明
编译器使用msvc,则用msvc生成驱动;编译器使用minGW,则使用该编译器生成驱动。