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文件放到该文件夹下面就可以
------------------------
感谢您的阅读!
如果您觉得该文章写的还不错,对您有帮助,想对我微小的工作一点激励,欢迎赞赏支持。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!