Qt5.3.1 ubuntu14.0464bit QSqlDatabase: QMYSQL driver not loaded的解决方案 real solution

在Ubuntu14.04上使用Qt5.3.1时遇到QMYSQL驱动未加载的问题。尝试通过ldd检查插件动态库、百度搜索解决方案无效。最终发现,安装Qt时选择全部组件,并将libqsqlmysql.so复制到指定目录(/opt/Qt5.3.1/5.3/gcc_64/plugins/sqldrivers/)是有效解决办法。

1.现象

在连接数据库的时候出现
./hello-pc
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7

2.趟过的坑

ldd 查看plugins 下的动态库

/gcc_64/plugins/sqldrivers$ ldd libqsqlmysql.so
libmysqlclient_r.so.16 => not found

于是开始百度 发现有的说

libmysqlclient_r.so.16 复制一下 变成 libmysqlclient_r.so.18 亦或 ln -s 

然并卵

还折腾过装过不计其数的pakage

my times

3.真正有效的解决方案

在安装Qt的时候请全部选择安装

/opt/Qt5.3.1/5.3/Src/qtbase/src/plugins/sqldrivers$ ls
db2  ibase  mysql  oci  odbc  psql  qsqldriverbase.pri  README  sqldrivers.pro  sqlite  sqlite2  tds
pc@pc:/opt/Qt5.3.1/5.3/Src/qtbase/src/plugins/sqldrivers$ cd mysql/
pc@pc:/opt/Qt5.3.1/5.3/Src/qtbase/src/plugins/sqldrivers/mysql$ ls
m
### QtQSqlDatabase 头文件未找到的解决方案 在开发基于 Qt 的应用程序时,如果遇到 `QSqlDatabase: No such file or directory` 编译错误,通常是因为项目配置不正确或者缺少必要的依赖项。以下是详细的分析和解决方法: #### 1. 确认 Qt 模块是否已启用 确保项目的 `.pro` 文件中已经启用了 SQL 模块。如果没有显式声明,则需要手动添加以下内容到 `.pro` 文件中[^1]: ```plaintext QT += sql ``` 此设置会告诉 qmake 工具链链接 Qt 提供的 SQL 库。 --- #### 2. 验证头文件路径是否正确 确认当前环境中是否存在 `QSqlDatabase` 对应的头文件。默认情况下,该头文件位于 Qt 安装目录下的 `include/QtSql` 路径中。例如,在 Windows 上可能是这样的路径结构: ``` D:\Qt\Qt5.13.2\5.13.2\mingw73_64\include\QtSql\ ``` 如果发现缺失这些文件,请重新运行 Qt 安装程序并选择完整的模块安装选项[^2]。 --- #### 3. 设置自定义 include 和 lib 路径 当使用第三方库(如 MySQL 或 SQLite)时,可能还需要额外指定其对应的头文件位置以及动态链接库的位置。对于 MySQL 连接器而言,可以按照以下步骤操作: - **复制头文件** 将 MySQL 数据库安装目录中的 `include` 文件夹拷贝至 QT 工程根目录下[^3]。 - **修改 .pro 文件** 添加以下两行来指向新的头文件和库文件路径: ```plaintext INCLUDEPATH += $$PWD/include LIBS += -L$$PWD/lib -lmysqlclient ``` 注意替换实际路径以匹配本地环境布局。 --- #### 4. 动态加载驱动支持 即使解决了基础编译问题,仍需验证目标平台上是否有可用的数据访问插件。通过打印调试信息检查可选驱动列表: ```cpp #include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "Available Drivers:" << QSqlDatabase::drivers(); return a.exec(); } ``` 正常情况下应该看到类似于下面的结果: ``` Available Drivers: ("QSQLITE", ...) ``` 若缺乏预期条目,则表明尚未成功构建对应平台上的特定数据库引擎支持包[^4]。 --- #### 5. 手动编译 MySQL 插件 (仅限必要情况) 某些发行版可能省略了预编译好的二进制版本;此时就需要自行完成这一过程。具体流程参见官方文档说明或参考其他开发者分享的经验贴[^1][^2]。 --- ### 总结 综上所述,“QSqlDatabase: No such file or directory”的根本原因往往涉及三个方面——即模块遗漏、资源定位偏差以及外部依赖管理不当。逐一排查以上提到的各项要点之后,绝大多数同类难题都能迎刃而解。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值