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命令可查看具体依赖问题
- 使用linuxdeployqt打包,指定-qmake,一般指定后不会出现依赖问题
- 运行ldd命令后,根据具体问题,手动拷贝相关依赖库
三、调试过程
- 一开始运行报错:QSqlDatabase: xxx driver not loaded,available drivers中确实没有相关驱动,将Qt目录中的sqldrivers/文件夹,拷贝覆盖即可
- 然后再运行还报上述错误,并且显示available drivers中包含xxx驱动.
- 进入到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
- 疑似系统内存在多个Qt版本,打包错误。打包命令增加-qmake:
./linuxdeployqt 可执行文件 -appimage -qmake=/home/xxx/Qt5.12.12/5.12.12/gcc_64/bin/qmake
- 程序运行正常。
其他问题参考链接:
- linux设置了环境变量不生效,仍然只进入/usr/bin中去找:https://blog.csdn.net/weixin_39712497/article/details/80263060
- linux qt 打包由于版本不一致导致失败:https://blog.csdn.net/weixin_43838644/article/details/132741924
- linuxdeployqt找不到Qt库路径怎么办:https://ask.csdn.net/questions/8814055
- KylinV10上qt5.9开发应用打包步骤(一)–linuxdeployqt 报错解决:https://blog.csdn.net/bootleader/article/details/116243886
- 使用linuxdeployqt在linux下进行Qt打包发布(超详细):https://blog.csdn.net/zyhse/article/details/106381937/ – 推荐


