Qt 连接数据库报错QSqlDatabase: xxx driver not loaded,但后续提示available drivers里包含此驱动

一、问题描述

  • 使用linuxdeployqt打包,然后运行程序,报错如下:
QSqlDatabase: `xxx` driver not loaded
QSqlDatabase: available drivers: QSQLITE `xxx`

参考链接:
linux下 QT出现QSqlDatabase: MYSQL driver not loaded:https://huaweicloud.csdn.net/654cb9bb34bf9e25c799cf3a.html
Qt连接Mysql出现问题(一):“Driver not loaded Driver not loaded“:https://developer.aliyun.com/article/1560254

二、解决方案

出现原因是程序可找到相关数据库驱动的库文件,但是库文件的依赖有问题. 使用ldd命令可查看具体依赖问题

    1. 使用linuxdeployqt打包,指定-qmake,一般指定后不会出现依赖问题
    1. 运行ldd命令后,根据具体问题,手动拷贝相关依赖库

三、调试过程

    1. 一开始运行报错:QSqlDatabase: xxx driver not loaded,available drivers中确实没有相关驱动,将Qt目录中的sqldrivers/文件夹,拷贝覆盖即可
    1. 然后再运行还报上述错误,并且显示available drivers中包含xxx驱动.
    1. 进入到sqldrivers/文件夹,使用ldd命令 ldd xxx.so,报错如下:
libQt5Sql.so.5: version `Qt_5_PRIVATE_API' not found
libQt5Core.so.5: version `Qt_5_PRIVATE_API' not found
    1. 疑似系统内存在多个Qt版本,打包错误。打包命令增加-qmake:
./linuxdeployqt 可执行文件 -appimage -qmake=/home/xxx/Qt5.12.12/5.12.12/gcc_64/bin/qmake
    1. 程序运行正常。

其他问题参考链接:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐