ubuntu中Qt可执行程序MYSQTL连接报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers

环境:ubuntu20.04,QT5.14.2,MYSQL8.0.39-0ubuntu0.20.04.1 for Linux on x86_64 (Ubuntu)
背景:Qt程序进行mysql连接,报错通过编译生成libqsqlmysql.so文件的驱动,可以解决本地的mysql的数据库连接,但是复制可执行程序release到其他ubuntu环境中报错,很明显就是驱动没有加载的,但是可执行程序已经有驱动so文件。

如何编译mysql的驱动安装请查询其他博客,这个有许多资料:Ubuntu 22.04 编译安装 Qt mysql驱动_ubuntu qt mysql-优快云博客

重点是解决本地可以安装mysql驱动连接,移植到其linux报错驱动没有加载

解决的步骤尝试:

方法1:查看是否有可执行的权限

ls -l #查看libqsqlmysql.so是否有可执行权限(绿色为可执行)
-rwxr-xr-x 1 hik hik 112560 Oct 24 14:28 ./sqldrivers/libqsqlmysql.so
chmod +x libqsqlmysql.so    #赋予文件
### LinuxQMYSQL 驱动未加载解决方案 在 Linux 系统中遇到 `QSqlDatabase: QMYSQL driver not loaded` 的问题时,通常是因为 Qt 未能找到 MySQL 数据库驱动程序。以下是解决问题的具体方法: #### 方法一:安装必要的依赖项 确保系统已安装 MySQL 客户端开发库以及对应的 Qt SQL 插件。对于基于 Debian/Ubuntu 的发行版,可以运行以下命令来安装所需的软件包: ```bash sudo apt-get update sudo apt-get install libmysqlclient-dev qtbase5-private-dev libqt5sql5-mysql ``` 这些命令会安装 MySQL 开发库和 Qt 对应的 MySQL 支持插件[^4]。 #### 方法二:手动构建 QMYSQL 插件 如果通过上述方式无法解决问题,则可能需要手动编译并生成 QMYSQL 插件。按照以下步骤操作: 1. **获取源码** 找到 Qt 源码目录中的 `src/plugins/sqldrivers/mysql` 文件夹。如果没有本地源码,可以从官方下载对应版本的 Qt 源码压缩包。 2. **配置环境变量** 设置正确的路径以便访问 MySQL 库文件。例如,在终端执行以下命令: ```bash export MYSQL_CONFIG=/usr/bin/mysql_config ``` 3. **编译插件** 进入 `mysql` 插件目录后,依次执行以下命令完成编译过程: ```bash qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-lmysqlclient_r" make sudo make install ``` 编译完成后,生成的动态链接库会被放置于系统的默认插件路径下(通常是 `/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/` 或其他指定位置)[^3]。 #### 方法三:验证可用驱动列表 重启应用程序之前,可以通过调用如下代码确认当前支持哪些数据库驱动: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << QSqlDatabase::drivers(); // 输出所有可用驱动 return a.exec(); } ``` 正常情况下应该看到包含 `"QMYSQL"` 的输出结果[^1]。 --- ### 总结 以上介绍了三种主要途径用于处理 Linux 平台上的 `QSqlDatabase: QMYSQL driver not loaded` 错误情况。优先尝试自动化的包管理工具解决;当此法失效后再考虑自行搭建所需组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

六点的晨曦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值