ubuntu中Qt可执行程序MYSQTL连接报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers
环境:ubuntu20.04,QT5.14.2,MYSQL8.0.39-0ubuntu0.20.04.1 for Linux on x86_64 (Ubuntu)
背景:Qt程序进行mysql连接,报错通过编译生成libqsqlmysql.so文件的驱动,可以解决本地的mysql的数据库连接,但是复制可执行程序release到其他ubuntu环境中报错,很明显就是驱动没有加载的,但是可执行程序已经有驱动so文件。
如何编译mysql的驱动安装请查询其他博客,这个有许多资料:Ubuntu 22.04 编译安装 Qt mysql驱动_ubuntu qt mysql-CSDN博客
重点是解决本地可以安装mysql驱动连接,移植到其linux报错驱动没有加载

解决的步骤尝试:
方法1:查看是否有可执行的权限
ls -l #查看libqsqlmysql.so是否有可执行权限(绿色为可执行)
-rwxr-xr-x 1 hik hik 112560 Oct 24 14:28 ./sqldrivers/libqsqlmysql.so
chmod +x libqsqlmysql.so #赋予文件的可执行权限
方法2:环境变量问题,确保可执行程序可以找到libqsqlmysql.so文件
#终端命令输入(临时设置环境)
export LD_LIBRARY_PATH=/usr/lib64/:/usr/lib:/lib64:/lib:/home/your-path/bin:$LD_LIBRARY_PATH
#bashrc环境变量设置(永久的)
vi ~/.bashrc
#添加环境变量后退出
export LD_LIBRARY_PATH=/usr/lib64/:/usr/lib:/lib64:/lib:/home/your-path/bin:$LD_LIBRARY_PATH
#运行生效
source ~/.bashrc
方法3:使用ldd 查看libqsqlmysql.so文件库信息,确保不少其他库依赖


少了对应的库,在开发的环境上复制过来,确保每一个库都能找到,同时设置LD_LIBRARY_PATH的环境路径对应起来
方法4:增加调试信息,一步一步来检查
#设置调试消息,开启值为1,调试后关闭设置值0
export QT_DEBUG_PLUGINS=1
#运行可执行程序报错,根据错误记录查询
./可执行程序
我的问题是没有Qt查找的sqldrivers文件夹没有这个文件夹
新建sqldrives文件夹将libqsqlmysql.so文件放到该文件夹下面就可以


------------------------
感谢您的阅读!
如果您觉得该文章写的还不错,对您有帮助,想对我微小的工作一点激励,欢迎赞赏支持。

浙公网安备 33010602011771号