Window下 Qt 编译MySQL驱动

搞了一整天的qt下连接mysql的事,终于搞定了

这里使用mysql的过程中主要会出现“QMYSQL driver not loaded”的错误,这有两种可能

1.qt找不到你的mysql的驱动。
      先去你的Qt的安装目录(例:C:\Qt\4.8.5\plugins\sqldrivers)下找找看有没有mysql的驱动

      驱动的名字为“libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”(搜索的过程中很多人说是这两个文件“qsqlmysql.dll”和“qsqlmysqld.dll”,可能是qt4和qt5的却别,我的qt4最后编译mysql驱动生成的就是前面的两个)

      如果能找到这两个文件,那么恭喜你,不需要自己去编译生成这两个驱动文件了


2.qt目录下有驱动文件,但是qt找不到mysql的库文件

     库的文件名为“libmysql.lib”,这个库文件应该放在Qt的bin文件夹下(例:C:\Qt\4.8.5\bin)

     赶紧去文件夹里看看,十有八九没有啊,怎么办呢?

     去你mysql的安装目录找找,在lib文件夹里


另外强调一下,mysql的版本必须要和Qt一样。即32位都是32位,搞错了会出错的。

关于mysql的下载,我也是弄了很久,刚开始不知道mysql可以免安装,就以为下错了。其实mysql有安装和解压两种(不只是单纯的解压哦)

这里给个安装方法链接http://www.cnblogs.com/fnlingnzb-learner/p/6009153.html



接下来是重点,对mysql的驱动进行编译,以生成libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”这两个文件

1.首先找到Qt安装目录下的mysql.pro工程源码,我的路径为:C:\Qt\4.8.5\src\plugins\sqldrivers\mysql

用Qt打开该工程,试着进行构建,一般来说,Qt会告诉你找不到mysql.h文件,这时候不要慌,去你的mysql安装目录下或者刚下载的压缩包里找找,找到include文件夹

然后在PRO中加入这两句

Window下 Qt 编译MySQL驱动

编译后,查找生成文件夹debug或release中会有这两个libqsqlmysqld4.a ”和 “qsqlmysqld4.dll”


复制后放入C:\Qt\4.8.5\plugins\sqldrivers这个路径,千万不要放错哦,然后就应该可以正常使用啦


2017/8/3更新  按上文连接发现有问题,文件夹下并没有data文件夹,添加方法如下:

输入cmd进入控制台

1.停止mysql,在命令窗口中输入并运行:net stop mysql 即可

2.进入到mysql安装目录的bin目录下。然后输入命令(备注:所有的--前面均有一个空格哦。建议直接复制,不要自己输入命令,以防丢失空格哦):

mysqld --initialize-insecure --user=mysql

然后回车;去目录下查看,已经自动创建好data文件夹,然后再次启动。

这里有个疑惑 用Qt连接数据库时,setDatabaseName()这个函数只有选择已经存在的数据库时,才可以连接,如果不存在则连接失败