写这篇博客的原因很简单,百度一堆答案看的眼花缭乱,有用的没几个,也不想下次在安装QT数据库环境上浪费时间,也希望大家也不要在这里浪费时间。第一次Windows下安装Mysql实在是痛苦。
注意:图省事的朋友可以直接在这里下载我编译好的驱动文件,能不能使用我就不清楚了:
http://pan.baidu.com/s/1qYktUhA
本来Qt5.6.0已经自带了Mysql的驱动。在此目录中
C:\Qt\Qt5.6.0\5.6\mingw49_32\plugins\sqldrivers
如果你可以使用,恭喜你中奖了,那就大胆的用吧!然而中奖终究是少数,大部分人使用的时候都会报错。如下:(这里写成文字方便人搜索吧!)
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QPSQL QPSQL7
"Driver not loaded Driver not loaded"
意思很简单就是你Qt自带的驱动有问题是使用不了的,那么接下来就须要编译自己Mysql驱动,也就是库文件,上网查了很久弄了一天,其实很简单,总结了下需要的东西。
1.QT 源码。本来我QT是安装版本的5.6,根本就没有源码(可是苦了宝宝我了),源码的名字一般是中间有everywhere。Windows下一般是一个ZIP的压缩文档。解压到任何地方都可以。我将其解压在C:\Qt目录下也就是Qt的安装目录。
比如 :qt-everywhere-opensource-src-5.6.0.zip
QT5.6Windows安装板下载地址:http://pan.baidu.com/s/1c2t5MCw
QT5.6Windows版本的源码下载地址 :http://pan.baidu.com/s/1hs0PmQC
2.Mysql安装版就可以如果没有合适的安装板下载源码也是可以的。下面是度娘出来的详细下载与安装方法: http://jingyan.baidu.com/article/597035521d5de28fc00740e6.html
安装版本在安装的时候,这里切记的有个问题就是如图一定要选择Custom可以自定义目录,最开始一路NEXT驱动也生成出现错误,这里自定义了路径就好了我也不知道为啥,但是百度都是这么说的。
这个是我使用的路径 C:\MySQL\MySQL Server 5.5\
之后一路next吧。
这里我也给出一份Mysql5.5.30安装板下载地址:http://pan.baidu.com/s/1jIqBLVS
准备工作做好了,下面就开始编译了。
1.我们先找到QT安装包里面自带Mingw工具集命令窗口。
开始菜单中可以找到。
2.右键管理员的方式运行。使用CMD进入到QT源文件的带有mysql.pro文件的目录:
cd C:\Qt\qt-everywhere-opensource-src-5.6.0\qtbase\src\plugins\sqldrivers\mysql
此目录下有三个文件,不然之后会编译不过。
3. 执行Qmake ,以mysql.pro工程文件,生成Makefile,以及生成mysql库的源文件。
qmake "INCLUDEPATH+=C:\MySQL\MySQLServer5.5\include" "LIBS+=C:\MySQL\MySQLServer5.5\lib\libmysql.lib" -o Makefile mysql.pro
生成产物:
4.执行 mingw32-make
在C:\Qt\qt-everywhere-opensource-src-5.6.0\qtbase\plugins\sqldrivers这个目录(与编译目录不同)下会生成我们Qt所需要的mysql数据库文件
5.将上面生成的这个全部产物复制到:
C:\Qt\Qt5.6.0\5.6\mingw49_32\plugins\sqldrivers
目录中。
6.把C:\MySQL\MySQL Server 5.5\lib\libmysql.dll复制到C:\Windows目录下。
注意的是Mysql 目录有空格的请多注意下。
6部大功告成。下面就来测试下吧!
下面是测试代码:
编译输出:
重要提示:
如果在编译时,出现这样的错误:compilation terminated. Makefile.Release:466: recipe for target '.obj/release/main.o' failed mingw32-make[1]: *** [.obj/release/main.o] Error 1 mingw32-make[1]: Leaving directory 'D:/D/QT/qt-everywhere-opensource-src-5.6.0/qtbase/src/plugins/sqldrivers/mysql' makefile:38: recipe for target 'release-all' failed mingw32-make: *** [release-all] Error 2
原因可能有以下:
①Qt的mingw是32位的编译器,你电脑里面肯定是装了64位的MySQL,所以才会出现这个错误,你将64位的MySQL卸载掉,装一个32位的MySQL再试一下,就可以了。本质上,是32位的编译器使用64位的库,当然会出错。最好是全部采用32位的!
②Qt5.8编译驱动出错,通过换Qt版本解决。