CentOS8下QT5.15版本libqsqlmysql.so库生成步骤

1、使用qt连接mysql数据库,代码如下:

在pro中增加一行

qt +=sql

cpp文件中加入头文件

#include <QStringList>
#include <QMessageBox>
#include <QSqlError>

连接数据库如下代码

 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("127.0.0.1");
        db.setPort(3306);
        db.setDatabaseName("你的数据库");
        db.setUserName("root");
        db.setPassword("root");
        bool ok = db.open();
        if (ok)
        {
            QMessageBox::information(this, "infor", "success");
        }
        else
        {
            QMessageBox::information(this, "infor", "open failed");
            qDebug()<<"error open database because"<<db.lastError().text();
        }

提示:

QSqlDatabase: MYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
failed to connect to mysql "Driver not loaded Driver not loaded"

 解决方法:没有libqsqlmysql.so库文件

libqsqlmysql.so库文件生成步骤:

1、修改Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql目录下的mysql.pro,注意:Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql路径是你本机的QT安装路径。在文件最后增加

INCLUDEPATH +=/usr/include/mysql    #这个目录是mysql的头文件目录
LIBS += -L/lib64/mysql/  -lmysqlclient   #这个库文件是libmysqlclient.so库文件,如果这个lib配置不对,将无法正常生成libqsqlmysql.so

如果不知道lmysqlclient文件路径可以用如下命令查找

find / -name libmysqlclient.so

2 在Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql目录下执行qmake mysql.pro

如果提示 qmake not find command说明qmake没有安装或者qmake没有加入到环境变量,此时,先看看qmake是否安装,执行:

find / -name qmake,如果查到,就有绝对路径执行qmake mysql.pro

一般在Qt/5.15.2/gcc_64/bin这个路径下面

PS:一定要用qmake生成makefile否则会提示和的错误,比如缺少文件错误

3  makefile生成后 执行make 正常情况下会生成libqsqlmysql.so文件,如果提示undefine等很多错误就是LIBS += -L/lib64/mysql/  -lmysqlclient 没有设置正确。

4 libqsqlmysql.so文件生成在Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers

将复制到/Qt/5.15.2/gcc_64/plugins/sqldrivers即可

5再次执行程序,发现可以正常连接mysql了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值