MYSQL Driver not load解决&QT编译MySQL数据库驱动

这里写了QT下编译64位的MySQL和32位的MySQL驱动方法,和QT报错:MYSQL Driver not load解决。

(如果直接看驱动的编译请看第二点)

1、首先先看你的Qt安装路径下的sqldrivers目录下是否有qsqlmysql.dllqsqlmysqld.dll动态库文件。

如:我安装的是32位MySQL我就去32 位的mingw的目录下找sqldrivers目录,如果是安装的64位的MySQL就去64位下的mingw目录下找sqldrivers目录。(使用的编译器的位数要和MySQL的位数一致)
原本我的也没有,我这里是已经编译过了的结果(在32位编译器下MySQL也是32位)
这是64位下的:
在这里插入图片描述

如果有这两个文件,就直接将对应版本的libmysql.dll(qsqlmysql.dll和qsqlmysqld.dll一定是要和相同版本下的MySQL的libmysql.dll配套使用,不然不行,一定要配套!)拷贝到你安装的Qt的安装路径的bin目录下即可解决报错 。如:我的放到 D:\QT\5.14.2\mingw73_32\bin 下
在这里插入图片描述
在这里插入图片描述
如果没有,那么就去找QT源码中的mysql的驱动工程 自行编译,然后再生成qsqlmysql.dll和qsqlmysqld.dll库文件拷贝到sqldrivers目录下。以及对应版本的ibmysql.dll拷贝到你安装的Qt的bin目录下。

2、自行编译MySQL驱动工程操作

2.1 如果你还没安装mysql、或者你的qt只有64位的编译器
先到mysql官网(https://downloads.mysql.com/archives/community/)去下载与你想要拷贝的libmysql.dll库文件的版本一致的mysql安装源码包(我这里是mysql-5.6.36-win32.zip,解压后如\mysql-5.6.36-win32\lib目录下有你所需要的libmysql.dll库文件)

在你的QT安装路径下找到源码目录,如果没有就去官网(https://download.qt.io/archive/qt/ )下载对应版本的源码包,下载解压
如:
在这里插入图片描述
在源码目录里面找到mysql的驱动源码目录如:
D:\QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
在这里插入图片描述
2.2 打开工程文件mysql.pro工程文件,修改其内容:
注释掉QMAKE_USE += mysql;
在最后添加已下内容:
在这里插入图片描述
(解释:INCLUDEPATH表示编译时需要增加的头文件的路径,LIBS表示编译时需要添加的库路径及库文件,DESTDIR表示编译后生成文件的目标路径修改了方便查找):
INCLUDEPATH += D:/MySQL/mysql_5.6/include/ (这里的路径根据自己的mysql-5.6.36-win32包路径进行修改,或者已安装的MySQL的安装路径)
LIBS += F:/installware/mysql-5.6.36-win32/lib/libmysql.lib(这个也一样,根据MySQL安装路径下的lib目录,如果是32位的软件就加win32:)
DESTDIR = …/mysql/qsqlmysqlDLL(这个可以选择一个自己找得到的路径)

**注意:**路径不能带有空格!(没有空格直接跳到2.3)
如果是像一下这种路径带有空格又修改不了的:C:\Program Files (x86)\MySQL\MySQL Server 5.6\include
在这里插入图片描述

  1. win+R
  2. 输入cmd
  3. 输入mklink/J E:\mysql\mysqlsql5.6 “C:\Program Files\MySQL\MySQL Server 5.6”
    //这样就可以避免原安装路径中的空格,前面的地址是你要要链接的新路径(不用自己创建) 后面是你带有空格的路径
    在这里插入图片描述
    链接好路径后,填入新的路径即可。

2.3 修改打开的mysql.pro工程项目中的qsqldriverbase.pri文件

如果是64位的MySQL,将原有的include($ $ shadowed($$PWD)/qtsqldrivers-config.pri)注释掉(就是在最前面加#号),因为原目录下没有qtsqldrivers-config.pri文件只有configuer.pri文件,所以先将其注释掉(备份防止以后需要修改回去),再重新添加include(./configure.pri)
在这里插入图片描述
如果是32位的MySQL
在这里插入图片描述
改完后去看看自己用的多少位的编译器,使用和MySQL位数一样的编译器,我这里是32位 的MySQL选用32位构建,如果是64位就换成64位的构建。
在这里插入图片描述
设置完后点击构建
在这里插入图片描述
构建完成只需要去生成路径下面找到生成文件就好啦。
如果生成路径设置成相对路径:DESTDIR = …/mysql/qsqlmysqlDLL就去工程目录下找如:D:\QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\qsqlmysqlDLL
如果是设置的绝对路径就去你设置的路径里面找(没找到就去设置对应的磁盘里面搜索qsqlmysql.dllw文件,可能在如:D:\plugins\sqldrivers里面)
32位生成的文件:
在这里插入图片描述
64位生成的文件:
在这里插入图片描述
把这几个文件拷贝到你QT安装目录下的sqldrivers目录下如:D:\QT\5.14.2\mingw73_32\plugins\sqldrivers
(我就拷贝了这两个,我32位的)
在这里插入图片描述
然后再把MySQL安装目录(如:D:\MySQL\mysql_5.6\lib)下的libmysql.dll库文件拷贝到对应编译器位数 的bin目录下(如:D:\QT\5.14.2\mingw73_32\bin或D:\QT\5.14.2\Tools\mingw530_32\bin)
在这里插入图片描述
在这里插入图片描述
到这运行程序打印出可用驱动就多了个“MYSQL”
在这里插入图片描述在这里插入代码片 qDebug()<< QSqlDatabase::drivers();//返回所有可用数据库驱动程序的列表,查看有哪些驱动可用在这里插入图片描述
到这驱动就编译完成了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值