QMYSQL driver not loaded(完整解决方案)

前言:

转载请附上连接,本帖原创请勿照抄。

    使用QT连接MySQL的过程中出现:QSqlDatabase: QMYSQL driver not loaded、QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7、Sql connect failed、"Driver not loaded Driver not loaded"。

    原因只有,也只会有一个就是你的项目里面没有QMySQL的驱动导致的。百度首页教程千千万,但是总不会适合你自己,真实踩坑以及完整的解决方案请往下看。

1. 简述(给大家看一下我连接MySQL的代码)

main.cpp
#include <QApplication>
#include <QProcess>
#include<QStyleFactory>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;

    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();  //获取现在可用的数据库驱动
    foreach(QString driver, drivers)
        qDebug() << driver;
    w.show();
    return a.exec();
}



.h
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <qDebug>
QSqlDatabase db;
QSqlQuery query;

.cpp
void MainWindow::connect_mysql()
{
    db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setPort(3306);

    db.setDatabaseName("mysql");

    db.setUserName("root");

    db.setPassword("root");

    if (!db.open()) {

        qDebug("Sql connect failed.");

        qDebug() << db.lastError().text();

    } else {

        qDebug("Sql connected.");

    }

    query=QSqlQuery(db);

    QString sq="INSERT INTO db_mysql VALUES(0,'SY2020111917', 123, '进入深山', 60, 0);";

    bool res=query.exec(sq);
    if(!res){
        qDebug()<<"添加失败";
    }else
    {
        qDebug()<<"添加成功";
    }
}

    一直出错都有点怀疑自己代码了,别怀疑自己这么简单的代码永远不会有毛病...

2. 找到QT自带的MySQL生成项目

F:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql   双击打开mysql.pro项目

3. 修改配置文件

这里有两个文件夹需要改动分别为:mysql.pro和qsqldriverbase.pri

qsqldriverbase.pri

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)

#更方便准确的找到qtsqldrivers-config.pri文件
include(./configure.pri)

PLUGIN_TYPE = sqldrivers

load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

  

mysql.pro

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+=F:\MYSQL\mysql-5.7.24-winx64\include\

#添加依赖的.lib文件
LIBS+=F:\MYSQL\mysql-5.7.24-winx64\lib\libmysql.lib

#生成你所需要的dll存放目录
DESTDIR=F:\MYSQL\mysql-5.7.24-winx64\lib\aa


4. 生成后QMySQL的DLL文件存放目录

    4.1 和选择的生成连接有关,还有就是MySQL如果是64位这里就要选64位,MySQL是32位这里就要选32位。

    4.2 存放DLL目录也是需要放在对于的目录下,例如:F:\Qt\Qt5.14.1\5.14.1\winrt_x64_msvc2017\plugins\sqldrivers

    4.3 生成的QMySQL驱动,qsqlmysql.dll和qsqlmysqld.dll

    4.4 最后连接程序试一下,可以看到驱动已经出现QMySQL,也连接成功了

5. 过程中可能遇到的问题

    5.1 打开mysql.h文件失败,这个主要是因为第3步修改参数mysql.pro配置的原因

    5.2 出现:LNK1181: 无法打开输入文件“F:\MYSQL\mysql-5.7.24-winx64\lib.obj”

        5.2.1 关闭QT中其他项目保证只有一个mysql依赖生成项目

        5.2.2 清除项目,进行重新构建,实在不行先清除项目-》关闭项目-》打开重新构建

    5.3 不同版本的dll错误使用可能会导致出错,所以希望大家尽量每次使用不同版本的QT尽量重新生成一次

    5.4 Library 'mysql' is not defined 找不到mysql,参考第3步注释掉 #QMAKE_USE += mysql

最后,感谢那些做正确教程和深入研究解决问题的老哥

借鉴参考自:https://www.cnblogs.com/dz-study/p/12382837.html

 

  • 15
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双子座断点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值