解决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/
就大功告成啦!!!
参考文档:
推荐阅读