Linux下QT 5.15无MySQL数据库驱动解决方法

经过鄙人百度,好像从QT 5.7开始,默认没有mysql驱动,都是要自己手动编译了,所以需要我们在QT官网下载源码,自己生成驱动文件在放入QT的数据库文件夹中

QT无mysql驱动

今天想使用QT程序连接一下mysql数据库,却报错:

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

环境

  • Deepin 20
  • QT 5.15
  • Qt Creator
  • qmake

下载QT源文件

这是目前有效的链接:QT 5.15.1 EveryWhere Src
下载并解压缩,如下图所示:
在这里插入图片描述

确定qmake

找到自己qmake的位置

kang@kang-PC:~$ whereis qmake
qmake: /usr/bin/qmake

查看qmake版本:

kang@kang-PC:~/Downloads/qt-everywhere-src-5.15.1/qt-everywhere-src-5.15.1/qtbase/src/plugins/sqldrivers/mysql$ /usr/bin/qmake -v
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

我这里好像是qmake位置不正确,于是我直接加路径运行qmake(当然,你也可以修改一下usr/bin的qmake或像我一样图省事):

~/Downloads/qt-everywhere-src-5.15.1/qt-everywhere-src-5.15.1/qtbase/src/plugins/sqldrivers/mysql$ ~/Software/Qt/5.15.0/gcc_64/bin/qmake -v
QMake version 3.1
Using Qt version 5.15.0 in /home/kang/Software/Qt/5.15.0/gcc_64/lib

编译mysql驱动

解压缩之后,我们进入到mysql驱动项目的目录下:~/Downloads/qt-everywhere-src-5.15.1/qt-everywhere-src-5.15.1/qtbase/src/plugins/sqldrivers/mysql
这个要根据你自己的解压位置确定

修改mysql.pro:

vim mysql.pro

修改完成如下图所示:
在这里插入图片描述

  • 第一块红色的include可以像我一样填写
  • 第二块红色的QMAKE_USE需要注释掉
  • 第三块红色的INCLUDEPATHDEPENDPATH需要根据你的实际情况填写

我是因为apt搜不到mysql,所以安装了mariadb的dev

sudo apt-get install libmariadb-dev

如果执行qmake命令过程中遇见错误

Cannot read qtsqldrivers-config.pri: No such file or directory

我们需在mysql.pro找到qsqldriverbase.pri的位置
在这里插入图片描述
我这里很明显告诉我qsqldriverbase.pri文件在上一级目录,接下来打开qsqldriverbase.pri文件,内容如下图:
在这里插入图片描述
我们只需要注释上图红色选中部分即可

保存并执行qmake命令:

qmake "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro

命令执行完后,我们会在目录下看到一个Makefile文件,执行sudo make
在这里插入图片描述

当执行完命令后,我们可以在控制台打印信息中看到生成的驱动文件位置:
在这里插入图片描述
在这里插入图片描述
此时,我们将编译好的so文件复制到QT目录下的对应位置即可,一般都是{QT install path}/{版本}/gcc_64/plugins/sqldrivers
在这里插入图片描述

测试

修改pro文件

修改项目pro文件Hello.pro,在QT +=后面追加sql
在这里插入图片描述

测试数据库连接

添加数据库连接代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("ptdb.dakapath.com");
db.setDatabaseName("dakapath2");
db.setUserName("root");
db.setPassword("Dapath888$");

if(!db.open()) //如果数据库打开失败,会弹出一个警告窗口
{
    QMessageBox::warning(NULL, "警告", "数据库打开失败");
}else{
    qDebug() << "Database open successed!";
}

在这里插入图片描述
显示数据库连接成功了!!!

Linux下使用Qt6连接MySQL数据库,需要遵循以下步骤: 1. 安装MySQL数据库和开发库: 首先确保你的Linux系统中已经安装了MySQL数据库以及MySQL的开发库。这通常可以通过系统包管理器安装,例如在Ubuntu或Debian系统中可以使用以下命令: ```bash sudo apt-get install mysql-server libmysqlclient-dev ``` 2. 添加MySQL驱动到你的项目: 在Qt项目中,你需要添加MySQL驱动支持。可以在你的`.pro`文件中添加以下行来包含MySQL驱动: ```pro INCLUDEPATH += /usr/include/mysql LIBS += -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient ``` 请根据你的系统架构和安装路径调整上述路径。 3. 初始化Qt SQL模块: 在你的主函数中,需要初始化QtSQL模块: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 初始化SQL模块 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 设置数据库连接的名称、主机名、用户名、密码和数据库名 db.setHostName("localhost"); db.setDatabaseName("your_database_name"); db.setUserName("your_username"); db.setPassword("your_password"); // 尝试打开数据库连接 if (db.open()) { qDebug() << "数据库连接成功!"; // 进行数据库操作... } else { qDebug() << "数据库连接失败:" << db.lastError(); } return app.exec(); } ``` 4. 使用QSqlDatabase进行数据库操作: 一旦连接建立成功,你就可以使用QSqlDatabase和相关的类(如QSqlQuery)来进行查询和更新操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

0564丶Kang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值