Driver not loaded之记录Qt访问MySql的解决经历

        对于这个问题的本质原因,我也搞不明白,所以记录的方法不一定对所有人行之有效。我的目的很简单,就是把数据库用起来,经过查找网上资料,最终把数据库跑起来了。因此记录如下:

        1,出现这个问题是缺少相关的库文件;

        2,其次Qt的编译工具需要和MySql的位数相同;【x64--x64】

        3,因为我的MySQL是x64;【select @@version_compile_machine】,所以重新下载Qt镜像安装:https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe

        4,因为需要重新编译MySQl的库文件,所以安装Qt的时候需要勾选Source,并且勾选mingw64和mingw32;【编译库文件mingw64】

        5,直接打开Qt安装目录中的工程文件:Qt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro。在此之前需要把sqldrivers拷贝进行备份,以防修改后无法还原。【sqldrivers_backup2024.4.2】

        6,修改pro文件,为编译做准备,注意选择MinGW 64-bit编译:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
#这个主要是添加.h依赖文件使用
INCLUDEPATH+="C:\Program Files\MySQL\MySQL Server 8.0\include"

#添加依赖的.lib文件
LIBS+="C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"

#生成你所需要的dll存放目录
DESTDIR="C:\Users\xxxx\Desktop\test"

        7,编译后运行后出现下面的界面,我以为是哪里搞错了,实际上库文件编译已经成功了。在桌面上test目录可以看到dll文件。

        8,将编译产生的.dll和.a文件拷贝到:\Qt\5.14.2\mingw73_64\plugins\sqldrivers中,运行原来Qt的数据库工程文件,访问MySql数据库正常。

     

注意事项:

        1,确保数据库工作正常;【我使用datagrip软件操作数据库正常,使用MySQL的命令行操作正常】

        2,测试数据库的代码如下:

          正常打印: ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7");

    //打印Qt支持的数据库
    qDebug()<<QSqlDatabase::drivers();
    QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");
    //连接数据库
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("123456");
    db.setPort(3306);
    db.setDatabaseName("user_database");
    //打卡数据库
    if(!db.open())
    {
        QMessageBox::warning(this,"错误",db.lastError().text());
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值