ubuntu中Qt可执行程序MYSQTL连接报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase

319 阅读2分钟
环境: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的驱动请查询其他博客,这个有许多资料:blog.csdn.net/cosx_/artic…

重点是解决本地可以mysql连接,移植到其linux报错驱动没有加载

image-20241024163909057.png

解决的步骤尝试:

方法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文件库信息,确保不少其他库依赖

正确,不少库:

image-20241024155905489.png

错误,少其他依赖库

image-20241024161357853.png

少了对应的库,在开发的环境上复制过来,确保每一个库都能找到,同时设置LD_LIBRARY_PATH的环境路径对应起来

方法4:增加调试信息,一步一步来检查

#设置调试消息,开启值为1,调试后关闭设置值0
export QT_DEBUG_PLUGINS=1
#运行可执行程序报错,根据错误记录查询
./可执行程序

我的问题是没有Qt查找的sqldrivers文件夹没有这个文件夹

新建sqldrives文件夹将libqsqlmysql.so文件放到该文件夹下面就可以

image-20241024162024835.png

运行正常

image-20241024162536668.png