QT5.15.2加载mysql驱动-QMYSQL driver not loaded解决方法

Available drivers:
"QSQLITE"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

源码下载(若存在,则忽略):

https://download.csdn.net/download/txwtech/89676147

解压到相同目录,5.15之后自行编译驱动

打开mysql.pro进行修改:

可以下载解压版的mysql数据库mysql-5.7.24-winx64。

参考:

https://www.cnblogs.com/txwtech/p/14751496.html

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

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

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


 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

 文件结构:

使用MSVC编译。

编译完成:

找到4个文件:

 拷贝到目录:

D:\Qt5.15.2\5.15.2\msvc2019_64\plugins\sqldrivers

然后D:\mysql-5.7.24-winx64\lib目录的如下两个文件

libmysql.dll和libmysql.lib同时拷贝到qt的D:\Qt5.15.2\5.15.2\msvc2019_64\bin目录,否者报错QMYSQL driver not loaded,这个是解决方法:

编译测试:

连接成功

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QStringList>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();  //获取现在可用的数据库驱动
    foreach(QString driver, drivers)
        qDebug() << driver;

    QSqlDatabase db;
    QSqlQuery query;

    db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setPort(3306);

    db.setDatabaseName("book_store_db");

    db.setUserName("root");

    db.setPassword("123456");

    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,'tt2021', 123, 'xxxx', 60, 0);";

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

MainWindow::~MainWindow()
{
    delete ui;
}

在使用Qt连接MySQL的过程中,出现"QPSQL driver not loaded"错误可能有多种原因。首先,需要确认已经正确安装了Qt和PostgreSQL,并且它们的版本是兼容的。如果Qt是32位的,那么PostgreSQL也需要安装32位的版本。确保环境变量已经正确设置,包括Qt和PostgreSQL的路径。在运行项目之前,可以将以下文件复制到可执行文件目录中:libintl.lib、libpq.dll、libpq.lib、qsqlpsqld.dll、qsqlpsql.dll、ssleay32.dll和libeay32.dll。此外,还应将libpq.dll复制到C:\Windows\目录下。最后,在工程运行目录下执行"windeployqt AppName.exe"命令来解决依赖关系。需要注意的是,Windows平台下Qt直接支持的数据库驱动只有QSQLITE和QSQLITE2,如果要使用其他数据库驱动(如QMYSQL、QPSQL等),需要进行额外的配置和加载。 可以使用以下步骤来排查和解决"QPSQL driver not loaded"错误: 1. 确认Qt和PostgreSQL的版本兼容性,并安装相应的位数(32位或64位)。 2. 检查环境变量是否正确设置,包括Qt和PostgreSQL的路径。 3. 将所需的库文件(libintl.lib、libpq.dll、libpq.lib、qsqlpsqld.dll、qsqlpsql.dll、ssleay32.dll和libeay32.dll)复制到可执行文件目录,以及将libpq.dll复制到C:\Windows\目录下。 4. 在工程运行目录下执行"windeployqt AppName.exe"命令来解决依赖关系。 5. 如果以上步骤都没有解决问题,可能需要检查Qt的安装和配置是否正确,并重新安装或配置Qt。 需要注意的是,Windows平台下Qt直接支持的数据库驱动只有QSQLITE和QSQLITE2。如果想要使用其他数据库驱动(如QMYSQL、QPSQL等),需要进行额外的配置和加载。可以根据需要参考Qt文档中关于数据库驱动的相关内容进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [QMYSQL driver not loaded(完整解决方案)](https://blog.csdn.net/qq_37529913/article/details/109850670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [解决Qt数据库驱动加载的问题(QSqlDatabase:QPSQL driver not loaded QSqlDatabase)](https://blog.csdn.net/Daisy_jf/article/details/103232062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

txwtech笛克特科

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

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

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

打赏作者

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

抵扣说明:

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

余额充值