错误背景:
qt连接不上数据库。
在使用Qt连接mysql数据库的时候,遇到过这样的报错:
(1)QSqlDatabase: QMYSQL driver not loaded
(2)QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
这是qt不能够加载数据库的驱动导致的。
解决办法:
一、检查qt的构建设置和mysql的版本
qt的构建设置和mysql要保持相同位数,如我用的是64位,mysql也要是64位的版本。
*mysql位数可以在mysql的控制台中输入 “show variables like '%version_%';”查看。
二、生成驱动
Qt目录里缺失了和Mysql的连接插件qsqlmysql.dll。
1.检查驱动
先看看自己的Qt目录下有没有连接插件qsqlmysql.dll,我的文件夹位置(参考):
2.编译出qmysql.dll文件
用Qt里的src源码中的mysql源码来编译出qmysql.dll文件。
2.1 没有src文件的(找到这个文件的跳过本小节)
有的大佬安装Qt是没有选择安装src源码,没关系,咱们去下载一个就可以了。
清华镜像:Index of /qt/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
下载qt-everywhere-src-xxx.zip就可以了,解压到你的qt文件夹。
访问5.15版本前的需要梯子,请注意。我下载的版本链接:
download.qt.io/archive/qt/5.14/5.14.2/single/
2.2构建mysql.pro
用Qt creator打开mysql.pro,添加下面的三行代码:
INCLUDEPATH +=E:/DateBase/Mysql/mysql-5.7.29-winx64/include/ # 添加你自己的mysql安装目录下的include文件夹
LIBS += E:/DateBase/Mysql/mysql-5.7.29-winx64/lib/libmysql.lib # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
DESTDIR = ../mysql/mysqlDll # 设置编译好的qmysql.dll放置的目录,这个是保存生成的dll文件的位置。
*注意:这几个路径不可以有空格,如果有空格可以加双引号或者把路径放进这个$$quote()方法就好了,不用去重新安装数据库改路径。
或者,还有一个偷懒的办法,即像我一样把这两个文件夹复制到qt文件夹下:
我的文件:
代码:
然后进行构建,这时会出现两个错误:
Cannot read H:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library 'mysql' is not defined.
别担心,我们一个一个解决
1.我们在上一级文件找到打开qsqldriverbase.pri文件,注释掉第四行:#include($$shadowed($PWD)/qtsqldrivers-config.pri)
加上一句 include(./configure.pir)
(加油,还剩最后一个问题)
2.重新打开mysql.pro,将第六行注释掉,#QMAKE_USE += mysql
注意这个时候需要重新构建,而不是构建!
3.转移驱动
找到之前指定好的dll放置的路径,里面有三个文件
统统拷贝到:D:\code\qt5.14\5.14.2\mingw73_64\plugins\sqldrivers
完成,此时可以连接数据库了!
备注
如果上面的办法还是不能帮你解决问题,再试试这个:
1.把mysql的bin目录添加到环境变量
2.将mysql安装目录下的lib文件夹下的libmysql.dll,复制到qt的编译器的bin目录下。
------------------------------------------------------------------------------------------------------------------------------
本人是qt小白,技术有限。写得不好的地方希望各位大佬指正海涵,衷心希望帮助您解决问题~