在Qt安装完成之后,若直接在Qt中连接MySQL数据库,往往会出现以下错误
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
这是因为Qt还未安装MySQL的驱动,以下以Qt5.12和MySQL8.0为例,详细介绍如何解决上述问题。
大致流程
首先需要确保你的Qt在安装的时候勾选了source(即源码),在Qt的安装目录下找到源码文件夹,找到MySQL的插件文件夹,以博主电脑为例:
C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
找到mysql.pro这一个Qt项目文件,双击打开。
更改为和博主一致的代码,
具体更改为:
将第6行注释掉
添加
win32:LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.0/lib) -llibmysql
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
编译之后,会出现这个界面,表明你已经成功了,关闭窗口。
注:加$$quote是因为博主MySQL的安装路径中有空格,如果没有空格可以不加;第一个地址是你MySQL安装的位置中lib的位置,第二、三个是你MySQL中lib文件夹的上一级;
注:如果不是安装版而是下载的zip文件,可能不是MySQL/MySQL Server 而是mysql+版本号(例如mysql-8.0.19-winx64),相应的路径就改成解压后的文件路径中lib和include路径
第二步
编译此项目,当项目编译完成之后,在Qt文件夹的同级目录下寻找plugins文件夹打开sqldrivers文件夹,博主这里是:C:\plugins\sqldrivers;注意是会新产生一个plugins\sqldrivers的文件夹
将其中的qsqlmysql.dll和qsqlmysql.dll.debug文件复制到Qt的编译器的插件目录中,博主处为:C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
第三步
将MySQL的动态库复制到Qt的bin目录下:
首先,我们在Mysql中找到lib文件夹:
博主这里是C:\Program Files\MySQL\MySQL Server 8.0\lib
找到libmysql.dll
将其复制到Qt的bin目录中:博主这里C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin
注意编译器不要选错;
到这里配置就完成了,可以进行MySQL连接的测试。