解决Ubuntu环境下,Qt无法连接MySQL问题

先说原因,本人试过多个版本Qt,其中Qt 5.9.8中包含的libqsqlmysql.so 即链接MySQL的动态链接库,是libqsqlmysql.so.18的老版本,而系统中存在的是libqsqlmysql.so.20,尝试使用软连接,但失败了。
而Qt最新的5.12.4中干脆没有MySQL的动态链接库
所以只能自己利用Qt源码自己编译了。

而Qt源码中的坑也很多(文中加粗的步骤需要重点留意

文中路径均是5.12.4版本路径,请对照当前版本修改路径

开始:

安装Qt官网下载的.run文件

安装时勾选安装源码

使用Qt连接MySQL,会出现以下问题

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

Can’t open database: Driver not loaded Driver not loaded(No such file or directory)

转到以下路径

cd /opt/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers

使用vim 或者 gedit 编辑 qsqldriverbase.pri

sudo gedit qsqldriverbase.pri

include($$shadowed($$PWD)/qtsqldrivers-config.pri)

改为

include($$shadowed($$PWD)/configure.pri)

进入以下路径

cd /opt/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/mysql

编辑mysql.pro文件

sudo gedit mysql.pro

QMAKE_USE += mysql

加#表示注释

#QMAKE_USE += mysql

准备两个文件的路径

mysql.h libmysqlclient.so

使用

sudo find / -name "mysql.h"
sudo find / -name "libmysqlclient.so"

我的路径是

/usr/include/mysql/mysql.h
/usr/lib/x86_64-linux-gnu/libmysqlclient.so

如果找不到"mysql.h",需要执行

sudo apt-get install libmysqlclient-dev

在/opt/Qt5.12.4/5.12.4/Src/qtbase/src/plugins/sqldrivers/mysql路径下

sudo /opt/Qt5.12.4/5.12.4/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=/usr/lib/x86_64-linux-gnu/libmysqlclient.so" mysql.pro

生成MakeFile文件

随后执行

sudo make

编译过程中会有这一句话提示

mv -f libqsqlmysql.so ../plugins/sqldrivers/libqsqlmysql.so

这就是生成的mysql动态链接库路径

把生成libqsqlmysql.so拷贝到sqldrivers文件夹下

sudo cp libqsqlmysql.so /opt/Qt5.12.4/5.12.4/gcc_64/plugins/sqldrivers/

就大功告成啦!!!

参考文档:

https://www.cnblogs.com/yongqiang/p/6121515.html

https://www.jianshu.com/p/9a5007c2821e

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值