qt连接MySQL 跳出 QMYSQL driver not loaded 巨坑之成功经验分享

 

工作环境:

windows10 pro_x64;

QT5.13.2 mingw73_64 ;下载地址http://download.qt.io/archive/qt/5.13/5.13.2/

在学习QT开发MySQL数据库应用时,按照QT官方的示例写下了如下的代码

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QDebug>

int main()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("123456");
    bool ok = db.open();
    if(ok)
    {
        qDebug() << "数据库连接成功";
    }
    else
    {
        qDebug() << db.lastError().text();
        return -1;
    }
    return 0;
}

运行结果出现了以下的错误提示:

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3

马上网上查找解决方法,看来这个问题还挺普遍,解决方案一大堆,首先按简单的大众办法,拷贝libmysql.dll到QT安装目录X:\Qt\Qt5.13.2\5.13.2\mingw73_64\plugins\sqldrivers下面,问题依旧,原来安装的QT5.13.2版本中没有提供qsqlmysqld.dll,需要自己编译。好吧,那就编译呗。

重点来了,根据网上的方法,一直不成功。其实网上的文章大多是转载摘抄,不知道那些转载的大神们有没有实践就发布了。为这什么事也没做折腾了三四天,愣是没成功,折磨的近于崩溃。急于往下进展只好放弃,改用QODBC的方式连接解决眼前的问题。后来不甘心,继续折腾,终于成功了,现记录于此,希望能给有同样经历的人一些帮助或借鉴。

下面从MySQL的安装开始,为了方便部署选用免安装8.0.18 x86-64bit版。

  1. MySQL8.0.18绿色版的安装步骤如下:

  2. mysql下载地址:https://dev.mysql.com/downloads/mysql/ 

  3. 解压到D盘你自定义的目录  X:\mysql-8.0.18-winx64

  4. 把X:\mysql-8.0.18-winx64\bin 添加到系统环境里

  5. MySQL初始化安装
    以管理员身份运行cmd,输入mysqld --initialize 视电脑配置情况,稍等待一会就会初始化完成。
    这时在你的解压目录X:\mysql-8.0.18-winx64 下生成一个data文件夹,MySQL的初始化文件都在里面,将来创建的数据库文件也在这里。
    注意查找data文件夹一个后缀名为.err的文件,文件名是你的计算机名称,一般是DESKTOP-XXXXXX.err的格式。用记事本打开它,找到[Server] A temporary password is generated for root@localhost: XXXXXXXXX这一行,其中冒号后面的内容就是临时密码。
    这里要多说两句,很多文章要配置这配置那的,配置完搞不好到这一步就各种报错,其实MySQL自带的mysql_config.pl文件默认配置的就可以,想个性化配置或有兴趣了解详情的朋友可自行百度。

  6. 安装与启动服务,在cmd提示符下:
    mysqld -install 成功会提示Service successfully installed
    net start mysql 稍等一会儿会提示服务启动成功

  7. 修改root管理员密码:
    首先用第5步找到的临时密码登录 mysql -uroot -pXXXXXXXX
    然后修改密码 mysql> set password = "123456"; 小白要注意SQL语句后面的分号。
    quit退出后,用新的密码登录。

  8. 创建测试数据库test:
    mysql> create database test;

至此,MySQL8.0.18的部署与数据库的创建就完成了。

下面进入qsqlmysql.dll的编译步骤。

我是在线安装的QT5.13.2 只所以没有选择源码选项,是因为耗时太长,而且很多的本人用不到,所以安装的没有源码,编译qsqlmysql.dll需要用的源码可以到http://download.qt.io/archive/qt/5.13/5.13.2/submodules/单独去下载,这里下载的是
qtbase-everywhere-src-5.13.2.zip。(很多文章要到http://download.qt.io/archive/qt/5.13/5.13.2/single/下载完整源码,其实没必要)。

  1. 将下载的qtbase-everywhere-src-5.13.2.zip文件解压到X:\qtbase-src目录下
  2. 修改X:\qtbase-src\src\plugins\sqldrivers\mysql\mysql.pro文件
     
    #QMAKE_USE += mysql  注释掉这一行
    #添加如下几行代码,注意路径要更换成 / 符号
    INCLUDEPATH += X:/mysql-8.0.18-winx64/include  
    LIBS += ‪X:/mysql-8.0.18-winx64/lib/libmysql.dll
    #指定编译输出的位置
    DESTDIR =X:/myfiles/  

     

  3. 修改X:\qtbase-src\src\plugins\sqldrivers\qsqldriverbase.pri 文件
     
    include($$shadowed($$PWD)/qtsqldrivers-config.pri) 这一行注释掉或删除,并添加如下一行代码
    include($$shadowed($$PWD)/configure.pri)

     

  4. 开始菜单下打开QT自带的命令行程序进行编译

    进入到X:\qtbase-src\src\plugins\sqldrivers\mysql\并执行以下两行命令
    首先执行:
    qmake mysql.pro   指令生成Makefile;
    然后执行:
    mingw32-make     编译生成qt的mysql驱动




    顺利的话,在X:/myfiles/ 目录下会生成以下四个文件


    将上面的文件拷贝到QT的安装目录如下路径中C:\Qt\Qt5.13.2\5.13.2\mingw73_64\plugins\sqldrivers
  5. 拷贝X:/mysql-8.0.18-winx64/lib/libmysql.dll到C:\Qt\Qt5.13.2\5.13.2\mingw73_64\bin文件夹下(或者c:\windows下也可)。

通过以上的操作,如果没有产错误的话,那就大功造成了,运行你的代码去开发MySQL应用吧!



总结:

以上各步骤配置中,一定要注意路径的正确。如果MySQL已经安装,但没有库文件,可以到以下官网连接
https://downloads.mysql.com/archives/c-c/ 去下载。另外注意32位的编译器对应32位的MySQL,64位的对应64位的,MySQL C API (libmysqlclient)的版本也是要对应正确。

另外注意的是,软件发布时要将libmysql.dll文件一同拷贝到.exe文件相同目录下。

以上每一步操作都经实践操作无误,但由于操作系统及系统运行环境的差异,可能会有不同的问题产生,欢迎小伙伴们留言讨论,共同进步。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值