QSqlDatabase: QMYSQL driver not loaded 原因以及解决办法

背景介绍:

Qt的桌面版包括如下一些驱动程序:[摘录于《C++ GUI Qt4 编程第二版》]

    QDB2            IBMDB2 7.1 版本以及更新的版本

    QIBASE         Borland InterBase

    QMYSQL        Oracle Call Interface

    QODBC            ODBC(包括微软公司的QSL服务器)

    QPSQL            PostgreSQL的7.3版以及更高级的版本

    QSQLITE          SQLite第3版

    QSQLITE          SQLite第2版

    QTDS               Sybase自适应服务器 

由于授权许可的限制,Qt的开源版本无法提供所有的驱动程序。当配置Qt时,既可以选择Qt本身就包含的SQL驱动程序,也可以以插件的方式建立驱动程序。公共领域不断发展的SQLite数据库将向Qt提供支持。

问题:【Windows OS下】

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: 

解决办法:

1. 首先安装MySQL数据库;

2. 将MySQL数据安装路径“MySQL\mysql-5.7.19-win32\lib”下的四个驱动文件:

        libmysql.dll        Release版动态库驱动模块文件

        libmysql.lib        Release版静态库驱动模块文件(非必需,仅用于工程的静态链接)

        libmysqld.dll        Debug版动态库驱动模块文件

        libmysqld.lib        Debug版静态库驱动模块文件(非必需,仅用于工程的静态链接)

  拷贝到你的工程运行目录下;

3. 将Qt安装目录“Qt5.7.1\5.7\msvc2013\plugins\sqldrivers”下的:

        qsqlmysql.dll         Release版动态库驱动中间件模块文件

        qsqlmysqld.dll        Debug版动态库驱动中间件模块文件

  拷贝到你的工程运行目录下;

4. 在你的工程运行目录下执行“windeployqt  AppName.exe”(不执行此步,仍会有上述QMYSQL driver not loaded错误提示;“AppName.exe"是你应用程序的名称,请自行替换);

[2021.09.26]补充:

windeployqt这个工具只在Qt4中有。Qt5已经移除了,可以用Windows下其他工具(Dependency Walker, Windows10下这个工具已经不好用)查看你的AppName.exe程序的dll依赖信息,自己去对应的dll目录拷贝过来即可。此方法同样适用于Qt4。

### Linux环境下QSqlDatabaseQMYSQL驱动未加载解决方案 在Linux环境中解决`QSqlDatabase: QMYSQL driver not loaded`问题通常涉及几个关键步骤。确保MySQL客户端库已安装并配置正确对于成功编译和链接Qt MySQL插件至关重要[^1]。 #### 安装必要的依赖项 为了使Qt能够识别并使用MySQL数据库,需要先确认已经安装了MySQL客户端库及其开发包。可以通过以下命令来完成: ```bash sudo apt-get update sudo apt-get install libmysqlclient-dev ``` 这一步骤会下载并安装所需的头文件和其他资源以便后续编译过程顺利进行[^2]。 #### 获取Qt源代码 如果尚未获取Qt源码,则可以从官方网站或其他可信渠道获得相应版本的源代码压缩包,并解压至本地磁盘上的合适位置。例如,在路径 `/home/user/qt-everywhere-src-5.x.y/` 中存放着完整的Qt源树结构[^3]。 #### 编译MySQL插件 进入Qt源代码中的SQL驱动程序目录,具体来说就是 `qtbase/src/plugins/sqldrivers/mysql` 文件夹内。这里包含了用于构建特定于平台和支持不同类型的数据库系统的模块化组件之一——即针对MySQL设计的那个部分。 执行如下指令来进行自定义构建操作前,请确保环境变量如`PATH`已被适当设置以包含Qt工具链的位置;同时也要注意调整CMake参数使之匹配个人系统状况下的实际情况: ```bash cd /path/to/qt-source-tree/qtbase/src/plugins/sqldrivers qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu -lmysqlclient_r" make sub-mysql sudo make install ``` 上述命令序列完成了对MySQL插件项目的重新编译工作,并将其放置到了Qt框架可以访问的标准位置上。此时应该可以在目标机器上看到新生成的共享对象文件(`.so`),比如名为`libqsqlmysql.so`这样的动态链接库。 #### 验证安装成果 最后一步是要验证新的驱动是否已经被正确注册进了应用程序内部。创建一个小测试项目或者直接利用现有的工程实例尝试建立与远程服务器之间的连接即可得知一切是否就绪无误。 通过以上措施应当能有效克服Linux平台上关于`QSqlDatabase: QMYSQL driver not loaded`这一难题所带来的困扰。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值