Debug 1:QSqlDatabase: QSQLITE driver not loaded

Debug 1:QSqlDatabase: QSQLITE driver not loaded

问题:在Qt应用中,我使用qtsqlite来操作本地sqlite数据库,在部署执行时会出现下面问题

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
[14:04:10.382625]  [error] [main.cpp_389]: open db fail, db:xxx Driver not loaded

解决方式:需要将数据库的drivers放置在“sqldrivers”目录下,而不是放置在可执行文件相同目录下。

如下图我的目录结构:
在这里插入图片描述

Windows上只需要将相关的dll放置在sqldrivers目录下。

参考:https://stackoverflow.com/questions/5151279/qsqlite-driver-not-loaded-where-to-put-qt-database-driver-plugins

### 解决方案 当遇到 `QSqlDatabase: QMYSQL driver not loaded` 的问题时,通常是因为 Qt 环境未能正确加载 MySQL 驱动程序。以下是可能的原因以及解决方案: #### 1. **确认可用驱动** 可用的数据库驱动列表显示为 `QSQLITE QMIMER QODBC QPSQL`[^3],其中并未包含 `QMYSQL` 或其变体版本(如 `QMYSQL3`)。这表明当前环境中缺少必要的 MySQL 数据库支持。 #### 2. **检查插件路径** 插件路径应指向正确的 SQLite 和 ODBC 驱动位置,例如 `D:\Qt\6.7.2\mingw_64\plugins\sqldrivers`。如果该路径下不存在 `qsqlmysql.dll` 文件,则说明尚未安装或编译适用于 MinGW 的 MySQL 驱动。 #### 3. **手动编译 MySQL 驱动** 若未找到预构建的驱动文件,需自行编译适合特定平台和工具链(即 MinGW 版本)的 MySQL 驱动。具体操作如下: - 下载并配置 MySQL 开发包; - 使用 Qt 提供的源码重新生成所需的动态链接库 (DLL),确保兼容目标架构(Win64)与所选编译器(MinGW)。 成功完成后,新生成的 `qsqlmysql.dll` 将被放置到上述指定目录中以便系统识别调用。 #### 4. **验证环境变量设置** 此外还需留意 PATH 路径是否已加入 MySQL 客户端库所在地址;同时确认运行时依赖项齐全无误——比如 libmysql.dll 是否存在且版本匹配良好。 ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QStringList drivers = QSqlDatabase::drivers(); qDebug() << "Available Drivers:" << drivers; if (!QSqlDatabase::isDriverAvailable("QMYSQL")) { qWarning() << "MySQL Driver Not Available!"; } else { qDebug() << "MySQL Driver Loaded Successfully."; } return a.exec(); } ``` 通过以上代码片段可以测试当前环境下是否有能力加载 QMYSQL 驱动,并打印调试信息辅助排查潜在障碍。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值