qsqlmysql.dll和qsqlmysqld.dll已经在E:\QT\5.13.2\mingw73_64\plugins\sqldrivers里面了,但是qt在连接mysql时候仍然有QSqlDatabase: MYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
时间: 2025-08-21 17:56:55 浏览: 4
出现 `QSqlDatabase: MYSQL driver not loaded` 的问题,即使 `qsqlmysql.dll` 和 `qsqlmysqld.dll` 已经在 `plugins/sqldrivers` 目录下,通常是因为 **Qt 的 MySQL 插件依赖 MySQL 的客户端库(`libmysql.dll`)**,而系统或 Qt 运行环境找不到它。
### ✅ 解决方案(分步骤排查):
#### 1. **检查 MySQL 客户端库是否可用**
- Qt 的 MySQL 插件需要 `libmysql.dll`(或 `libmysqlclient.so` on Linux)。
- **确保 `libmysql.dll` 在以下位置之一**:
- MySQL 安装目录的 `lib` 文件夹(如 `E:\mysql\mysql-8.0.xx\lib`)
- 系统的 `PATH` 环境变量包含的路径(如 `C:\Windows\System32`)
- 或直接复制到 Qt 的 `bin` 目录(如 `E:\QT\5.13.2\mingw73_64\bin`)
#### 2. **验证插件是否真的加载**
- 在代码中打印插件依赖是否满足:
```cpp
qDebug() << QSqlDatabase::drivers(); // 应包含 "QMYSQL"
qDebug() << QCoreApplication::libraryPaths(); // 检查插件路径是否正确
```
- 如果 `QMYSQL` 在列表中但仍报错,说明插件找到了,但运行时依赖缺失(如 `libmysql.dll`)。
#### 3. **检查插件与 Qt 版本的兼容性**
- **确保插件和 Qt 版本匹配**(如 5.13.2 的插件不能用于 5.15+)。
- 如果插件是自行编译的,需用 **相同编译器和 MySQL 版本**。
#### 4. **环境变量配置**
- 将 MySQL 的 `lib` 目录添加到系统 `PATH`:
```bat
set PATH=%PATH%;E:\mysql\mysql-8.0.xx\lib
```
- 或在代码中临时添加路径:
```cpp
QCoreApplication::addLibraryPath("E:/mysql/mysql-8.0.xx/lib");
```
#### 5. **调试依赖项(Dependency Walker)**
- 用工具 [Dependency Walker](https://www.dependencywalker.com/) 打开 `qsqlmysql.dll`,检查缺失的依赖(如 `libmysql.dll` 或 MSVC 运行时库)。
---
### 📌 常见原因总结:
| 问题 | 解决方法 |
|-----------------------|-------------------------------------|
| `libmysql.dll` 缺失 | 复制到系统 `PATH` 或 Qt 的 `bin` 目录 |
| 插件路径未正确加载 | 检查 `libraryPaths()` 或手动添加路径 |
| 插件与 Qt 版本不匹配 | 重新编译或下载匹配版本的插件 |
| 32/64 位冲突 | 确保 Qt、插件、MySQL 均为同一架构 |
阅读全文
相关推荐


















