ubuntu18.04编译安装mysql驱动:QSqlDatabase: QMYSQL driver not loaded

ubuntu18.04编译安装mysql驱动

  • Linux系统下使用Qt5.12连接mysql数据库的时候,报的错误如下:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: 
"Driver not loaded Driver not loaded"
QSqlQuery::prepare: database not open
"Driver not loaded Driver not loaded"

提示数据库的驱动没有安装,但是Qt的安装文件夹中确实已经存在mysql的动态库文件:
在这里插入图片描述
查了下,网络上的一些说法是这些库是不能够直接使用的,所以需要自己拿qt的mysql驱动源码编译

  • 切换到qt的数据库驱动源码路径,并且执行qmake
    在这里插入图片描述
    出现如下提示:

在这里插入图片描述
应该就是mysql驱动没有安装。继续编译源码
首先先找到mysql驱动编译所依赖的库文件

root@ecs-293010:~# locate mysql.h
/usr/include/mysql/mysql.h
root@ecs-293010:~# locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.1.0
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.26

libmysqlclient.so需要安装mysql的客户端才会有
接着修改驱动的工程文件

 #进去mysql的驱动源码目录中
 cd ~/Qt/5.12.0/Src/qtbase/src/plugins/sqldrivers/mysql
 #修改工程文件
 vi mysql.pro 

修改之后如下所示:


TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#注释掉下面这一行
#QMAKE_USE += mysql

OTHER_FILES += mysql.json
#添加下边这两行,对应于刚才我们找到依赖文件
INCLUDEPATH += /usr/include/mysql/
LIBS += -L/usr/lib/x86_64-linux-gnu -lmysqlclient

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

接着进行如下操作编译源码:

#进入上一层目录
 cd ..
 #找到qmake的位置
locate qmake
#执行qmake生成makefile文件
/root/Qt/5.12.0/gcc_64/bin/qmake
#再次进入驱动目录
cd mysql/
#再次执行qmake
/root/Qt/5.12.0/gcc_64/bin/qmake
#编译生成驱动文件
make

编译好之后的驱动文件位于此目录下

~/Qt/5.12.0/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers

在这里插入图片描述
接着,就是怎么让这个驱动库发挥作用了!
网络上很多人都是到这一步就说安装好了,或者把这个libqsqlmysql.so文件复制到目录

/root/Qt/5.12.0/gcc_64/lib/

下就说他们程序可以跑了,但是到我这里就还是不行,运行程序还是会报QSqlDatabase: QMYSQL driver not loaded的错误。所以说,这里还有个问题,可执行程序还是找不到mysql驱动库。淦!明明我cmake编译都没有报错啊!
思考良久,决定将解决方法放到下一篇文章:
linux下strace指令彻底解决MySql驱动库未加载问题:QSqlDatabase: QMYSQL driver not loaded

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值