这个绝对是个大坑啊,都说Qt5.5自带了mysql的驱动。的确是带mysql 的驱动,可是他还是QSqlDatabase: QMYSQL driver not loaded。于是我们还是老实的自己编译吧。
1、首先安装好mysql(不会安装的点我,安装32位的mysql,不要问我什么,因为这是坑)和qt。
注意:mysql 的 安装路径中不能有空格,别问我为什么,因为Qt不让有空格啊。
2、在开始菜单打开qt的命令终端:
Note:有人会问要不要配置环境变量,我只能说看你心情(=>就是不需要).
3、比如Qt的安装目录为D:\DevelopmentTools\Qt\,输入以下命令:
cd D:\DevelopmentTools\Qt\5.5\Src\qtbase\src\plugins\sqldrivers\mysql于是我们进入了这个目录下。
4、重新编译qt驱动:
我mysql的安装目录为D:\DevelopmentTools\mysql\Sever,于是我们输入以下命令:
qmake "INCLUDEPATH += D:\DevelopmentTools\mysql\Sever\include" "LIBS += D:\DevelopmentTools\mysql\Sever\lib\libmysql.lib" -o Makefile mysql.pro
mingw32-make注意:1、如果出现一大堆的错误,比如找不到#include <mysql.h>等等了,这就是你的qmake 后面的路径包含空格了,在好好检查一下吧。
2、如果出现类似这样的错误:
collect2.exe: error: ld returned 1 exit status Makefile.Release:81: recipe for target '..\..\..\..\plugins\sqldrivers\qsqlmysql.dll' failed mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql.dll] Error 1 mingw32-make[1]: Leaving directory 'D:/DevelopmentTools/Qt/5.5/Src/qtbase/src/plugins/sqldrivers/mysql' makefile:38: recipe for target 'release-all' failed mingw32-make: *** [release-all] Error 2这就是qt编译mysql驱动的坑所在,因为你安装的是64位的mysql为qt的编译为32位的,所以出错了。这时我们只需重装一个32位的mysql,就可以了。
5、重新配置mysql驱动
成功编译mysql驱动之后,在D:\DevelopmentTools\Qt\5.5\Src\qtbase\plugins\sqldrivers目录下,会生成4个文件。我们将文件夹下的qsqlmysql.dll 和 qsqlmysqld.dll 复制到D:\DevelopmentTools\Qt\5.5\mingw492_32\plugins\sqldrivers目录下。(根据自己实际安装qt的目录去定位目录)
最后我们将D:\DevelopmentTools\mysql\Sever\lib\libmysql.dll复制到C:\Windows目录下,这时重启你的qt,你就发现一切正常了。
提示:QSqlDatabase: QMYSQL driver not loaded 有可能一开始就是因为你的mysql版本是64位的,所以我们可以先装成32位的试试看,不行的话,我们在编译。