解决Qt5无法连接MySQL数据库的问题
引言
我最近打算开一个新项目,会用到 Qt5 和 MySQL,没想到刚开始就遇到了问题…
1 | QSqlDatabase: QMYSQL driver not loaded |
大体意思就是,这个 QSqlDatabase 里面压根就没有 QMySQL 这个驱动,在我印象中 Qt 肯定是自带了 MySQL 驱动的,搜索了一下知道了原因,在老版本的 Qt 中(5.9 还是 5.12?)在 C:\Qt\Qt5.xx\5.xx\mingwxx_xx\plugins\sqldrivers
这个目录下,有 qsqlmysql.dll 这个文件,我这边当然是没有了…所以 MySQL 肯定连不上了,既然没有那只能自己编译了,不可能去网上找吧,不同版本的文件也不同。
注意:不同版本的 MySQL 里面包含不同的 libmysql.dll,不同的 libmysql.dll 必须和配套的 qsqlmysqld.dll (debug 版)或 qsqlmysql.dll(release 版) 一起才能正常工作!
Qt MySQL 驱动构建(使用 MinGW 编译套件)
准备
编译前,请确认以下几点:
- 你的 Qt 安装时是否选择了 Sources。
- 你的 Qt 安装时是否选择的 64 位的 MinGW。

很多人应该没有选择 Sources 这一项,问题不大,在控制面板-> 卸载程序中找到 Qt 右键选择更改,自行添加 Sources 这个选项,具体做法可以借助搜索引擎,不怕麻烦的也可以直接重新按要求安装 Qt。
然后确定一下你的 C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
文件夹里是否如我描述的那样没有 qsqlmysql.dll 文件,然后再开始下一步。
编译
添加 Qt mingw 64 的环境变量,既然你都接触 Qt 了,环境变量对你来说应该是很熟悉的字眼了,就不说明怎么添加了,分别要添加的路径是:
1 | C:\Qt\5.14.2\mingw73_64\bin\ |
将以上路径替换成你自己的 Qt 安装路径即可,一定不要搞错了。
然后准备好你的 Qt 路径和 MySQL 路径,在终端中分别执行以下四行命令:
1 | cd C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers |
上面的路径依然是我自己的路径,请务必更改为自己的 Qt 和 MySQL 路径!
执行完第二行命令后,正常情况会输出以下内容:
1 | Info: creating stash file C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\.qmake.stash |
其中你需要关注你的 Checking for MySQL…后面和 Qt Sql Drivers 中的 MySql 是否都是 yes,如果不是,请检查你的路径和编译前的要求,无误后重新执行命令。
然后进行 make 和 install,中途可能会报一些 Warning,问题不大,只要命令执行完成后,你的 sqldrivers 文件夹中出现了如图所示的 qsqlmysql.dll 就代表编译完成了。

Qt MySQL 驱动构建(使用 MSVC 编译套件)
准备
与使用 MinGW
编译类似,不同的是在使用 QtCreator 配置这个项目时,需要选择对应版本的 MSVC 编译套件,这里以 Qt5.15.2 为例,首先打开 mysql 驱动的 Qt 工程文件:
1 | C:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro |

在这里我选择 MSVC2019 64bit
(注意与自己的 Qt 版本对应,这里对应 Qt5.15.2),然后配置项目即可。
然后会出现一些 error
,此时将 mysql.pro
文件中的部分代码修改为:
1 | TARGET = qsqlmysql |
LIBS
指定的本地mysql
动态库路径和动态库的名字;-L
指定库的路径;-l
指定库的名字,不需要写后缀,对应的文件全名为libmysql.dll
;INCLUDEPATH
和DEPENDPATH
指定的是本地mysql
的头文件目录。
编译
修改完成后,选择 Release 进行编译,会出现错误:error: Cannot read C:/qtsqldrivers-config.pri: No such file or directory
,此时打开项目中 qsqldriverbase.pri
文件:
1 | # include($$shadowed($$PWD)/qtsqldrivers-config.pri) 注释此处 |
然后重新按上述方法编译即可,编译成功之后,就得到了该项目生成的库文件,库文件的位置在安装 Qt 所在盘符的 plugins 目录中。
qsqlmysql.dll
Release 版本的动态库qsqlmysqld.dll
Debug 版本的动态库
最后
将 mysql
安装目录中的 libmysql.dll
放入你的 Qt 对应编译套件文件夹的 bin 目录或 exe 文件所在目录,MySQL 数据库即可成功连接,项目最终打包上线时,也别忘了将 libmysql.dll 打包进去。
也可以编辑 qmake 的.pro 文件,在其中把该链接库加进去,但打包时还是需要自行添加 libmysql.dll:
1 | LIBS += "C:\mysql-5.7.36-winx64\lib\libmysql.dll" |
libmysql.dll 在你的 MySQL 目录下的 lib 文件夹内,不同版本也是不能混用,这里推荐 MySQL5.7。
其次,还需要将刚才我们编译好的驱动qsqlmysql.dll
和qsqlmysqld.dll
复制到以下路径:
1 | C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers # 根据自己的版本选择对应路径 |