首页 > 数据库 >Arch中使用Qt6的QtSql出现mysql driver not loaded的解决记录

Arch中使用Qt6的QtSql出现mysql driver not loaded的解决记录

时间:2023-08-28 20:14:25浏览次数:38  
标签:Qt6 QtSql Qt -- 安装 usr mysql Arch 目录

查阅了网上的说法,出现这个错误的原因大致可能有以下几种:

  • Qt和mysql的位数不一样,一个是32位的,一个是64位的
  • Qt中自带的驱动库与所使用的版本不匹配
  • 代码写错了,比如"QMYSQL"写成了"MYSQL"

我出现个问题的原因是第二种。参考了一位老哥的博客QT Mac M1 解决 mysql driver not loaded 问题、官方文档重新编译生成。具体解决过程如下:

准备编译工具

需要提前安装好cmake和ninja,一般安装qt的时候都会一起安装了。
如果没有安装:

  • arch的小伙伴可以直接通过sudo pacman -S cmake ninja安装
  • 也可以自己通过源码构建或者下载已经构建好的二进制文件。具体参考包的官网

确认安装目录所在位置

因为我看网上有人是有下载目录和安装目录两个,防止为了搞混,还是说一下安装目录的位置
一般linux用户使用Qt自带的线上下载工具呢,安装在用户目录,也就是/home/<username>,自己选择选择位置的那就得问你自己了哦
若是使用linux发行版维护的qt呢,就可以去查看相应文档,查看文件的安装位置(arch就是安装在/usr下,对应的文件也在/usr的各个子目录中)

若是找到有点名字是qt,但是又不知道是不是安装目录的,看下图,只要是下图的组织结构的就是:

检测可用的客户端

先进入到Src目录:cd <Qt安装目录>/<版本号>/Src,例如我的就是~/Qt/6.5.2/Src
执行configure脚本,这个脚本会自动检测电脑上可用的客户端,中间会出现类似如下的输出:

...
Database options:
  -sql-<driver> ........ Enable SQL <driver> plugin. Supported drivers:
                         db2 ibase mysql oci odbc psql sqlite
                         [all auto]
  -sqlite .............. Select used sqlite [system/qt]
...

发现有自己要使用的客户端后进行下一步

检测必要的库和头文件

同样还是使用configure脚本来检测,但是还需要传入一些参数,来指定mysql/mariadb的头文件目录,以及库目录。
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="<Mysql的include文件夹位置>" -DCMAKE_LIBRARY_PATH="<Mysql的lib库目录>",
例如我的是:
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/include/mysql" -DCMAKE_LIBRARY_PATH="/usr/lib/mysql"

如果有报错,那就按照报错的提示去做,例如脚本告诉我我缺少LLVM,让我用LLVM_DIR参数指定其库目录,则就是:
./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/include/mysql" -DCMAKE_LIBRARY_PATH="/usr/lib/mysql" -DLLVM_DIR="usr/lib/cmake/llvm"

运行成功后差不多显示如下信息:

-- Configuring done
-- Generating done
-- Build files have been written to: ~/Qt/6.5.2/Src

编译插件

  • 先进入到sql插件目录(规范一点):cd ~/Qt/6.5.2/gcc_64/plugins/sqldrivers
  • 创建并进入build目录:mkdir build && cd build
  • 使用qt的qt-cmake进行Cmake配置:~/Qt/6.5.2/gcc_64/bin/qt-cmake -G Ninja ~/Qt/6.5.2/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX="~/Qt/6.5.2/gcc_64" -DMySQL_INCLUDE_DIR="/usr/include/mysql" -DMySQL_LIBRARY="/usr/lib/libmariadb.so"
    没有什么问题的话,进行编译
  • cmake --build . --config Release
    没有什么问题的话就接着进行安装:
  • cmake --install .

将生成的动态库文件放到Sql驱动目录

在build目录下执行:cp build/plugin/sqldrivers/libqsqlmysql.so ./


最后重启Qt Creator再运行即可
若是想查看类似的运行效果的图片,可以去开头给出的两个链接里面去看。可以结合那两篇一起看。

标签:Qt6,QtSql,Qt,--,安装,usr,mysql,Arch,目录
From: https://www.cnblogs.com/Fortunater/p/17660858.html

相关文章

  • Elasticsearch,Logstash和Kibana安装部署(ELK Stack)
    前言当今数字化时代,信息的快速增长使得各类组织和企业面临着海量数据的处理和分析挑战。在这样的背景下,ELKStack(Elasticsearch、Logstash和Kibana)作为一套强大的开源工具组合,成为了解决数据管理、搜索和可视化的首选方案。无论是监控日志、实时数据分析,还是构建仪表盘来监测......
  • 龙芯LoongArch架构2K0500开发板应用于车辆管理和控制系统解决方案
         迅为iTOP-LS2K0500开发采用龙芯LS2K0500处理器,基于龙芯自主指令系统(LoongArch®)架构,片内集成64位LA264处理器核、32位DDR3控制器、2DGPU、DVO显示接口、两路PCIe2.0、两路SATA2.0、四路USB2.0、一路USB3.0、两路GMAC、PCI总线、彩色黑白打印接口、HDA及其他常用接口。......
  • Arch/Manjaro Linux + KDE Plasma 桌面图标不显示
    安装后桌面图标不显示如果遇到安装后桌面图标不显示的问题,右击程序启动器(通常是左下角的Manjaro图标),选择“编辑应用程序…”。之后点击编辑→恢复到系统菜单即可。 ......
  • Windows 10 on ARM, version 22H2 (updated Aug 2023) ARM64 AArch64 中文版、英文版
    Windows10onARM,version22H2(updatedAug2023)ARM64AArch64中文版、英文版下载基于ARM的Windows10请访问原文链接:https://sysin.org/blog/windows-10-arm/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org基于ARM的Windows10起初,Windows10(与Win......
  • 【INFINI Workshop 深圳站】8 月 31 日一起动手实验玩转 Easysearch
    8月31日下午和INFINILabs的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。活动时间:2023-08-3113:30~17:30活动地点:广东深圳南山区科发路91号华润置地大厦D座5层05A会议室......
  • Elasticsearch性能优化
    GET_search{"query":{"match_all":{}}}GET_cat/indicesGET_cat/shardsPUT/server-2023.02.09/_settings{"number_of_replicas":0}PUT/_cluster/settings{"persistent":{"clus......
  • pyqt6组件
    PyQt6是Python的一套GUI工具包,它提供了许多常用的组件,以下是所有组件及其用途: 1.QApplication:创建GUI应用程序。2.QWidget:所有用户界面对象的基类。3.QMainWindow:主窗口,用于放置其他窗口部件。4.QDialog:模态对话框,用于获取用户输入。5.QLabel:显示文本或图像。6.QLin......
  • 【MySQL 8.0】通过pt-archiver实现表的历史数据归档
    (root@node02)>setgloballocal_infile=on;QueryOK,0rowsaffected(0.00sec)(root@node02)>createtablecustomer_jplikecustomer;QueryOK,0rowsaffected(0.20sec)(root@node01)>setgloballocal_infile=on;QueryOK,0rowsaffected......
  • 【Qt6】工具提示以及调色板设置
    工具提示即ToolTip,当用户把鼠标移动到某个UI对象上并悬停片刻,就会出现一个“短小精悍”的窗口,显示一些说明性文本。一般就是功能描述,让用户知道这个XX是干啥用的。在Qt中使用工具提示最方便的做法是直接用QWidget类的成员方法:setToolTip。从QWidget类派生的组件都可以用,......
  • Elasticsearch 保姆级入门篇
    Elasticsearch是一个分布式的、面向生产规模工作负载优化的搜索引擎。Kibana可以将Elasticsearch中的数据转化为直观的图表、图形和仪表盘。这篇文章,您将学习本地安装Elasticsearch和Kibana,以及使用开发工具/JavaSDK创建索引和搜索数据。1本地安装1.1创建网络......