前因
使用QT连接MySQL的过程中出现:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMIMER QMARIADB QMYSQL QODBC QPSQL
数据库连接失败: "Driver not loaded Driver not loaded"
原因只有一个:你的项目里面没有QMySQL的驱动导致的。百度教程千千万,全是重复的复制粘贴,也不适合你自己,自己找出原因才是最重要的,此处记录我的真实踩坑经历以及完整的解决方案,希望会对你有所帮助。
开发环境:
- 操作系统:Windows 11
- MySQL版本为:8.0.21
- Qt版本为:6.7。3
- QtCreator版本 为:14.0.1
解决方法
1. 构建(编译)驱动
较新版本的QT不再内置MYSQL驱动,需要自己构建。可以参考视频:Qt6配置MySQL驱动。
视频中编译了MySql 的库(libmysql.dll 和 libmysql.debug)与驱动(qsqlmysql.dll 和 qsqlmysqld.dll)
2.问题
我在操作完成后依旧报错:` QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMIMER QMARIADB QMYSQL QODBC QPSQL
数据库连接失败: "Driver not loaded Driver not loaded" `
这就很让人抓耳挠腮了,一方面available drivers: QSQLITE QMIMER QMARIADB **QMYSQL** QODBC QPSQL
然而又**"Driver not loaded Driver not loaded"**
。真是让人匪夷所思。
3. 解决
得益于Windows的使用经验,发现还是缺失了一些库。如果不愁内存直接把Mysql/lib目录下的文件全部复制就可以了,有一种简单粗暴的美。
实际上把这几个文件复制到构建好的程序所在目录下就可以了(exe同级目录,目前是添加这几个就可以正常运行)。
libcrypto-1_1-x64.dll
libmysql.dll
libssl-1_1-x64.dll
vcruntime140_1.dllws2_32.dll