本人环境如下
ubuntu20.04
qt5.12.8
本人在最初安装qtcreator的时候没有选择安装资源,所以需要单独去下载资源
如果有资源的话就不用再去下载了
如果在最初安装qtcreator的时候,勾选了如下图红色圈圈,就可以找到Qt源码MySQL的项目位置,使用Qt Creator 打开mysql.pro ,路径为下面代码区的。
要是没有的话就按着我下面的下载步骤开始
要是有的话就直接跳到修改mysql.pro文件那里开始看
/usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers/mysql/mysql.pro
首先进入下面的连接,选择你自己的qt版本
https://download.qt.io/archive/qt/
然后进入下面的页面
选择第一个submoules,点击进入
然后选择qtbase,点击后自动下载
下载后,把压缩包从下载移动到主目录即可
然后解压
然后打开/home/tech/qtbase-everywhere-src-5.12.8/src/plugins/sqldrivers/mysql中的mysql.pro文件,然后做如下修改
1.在mysql.pro中注释掉这句话
#QMAKE_USE += mysql
2.在mysql.pro文件中添加如下配置:
DESTDIR = ../mysql/target (指定最后生成的动态库存放位置)
INCLUDEPATH += /usr/include/mysql (引入MySQL头文件)
LIBS += -L/usr/lib/aarch64-linux-gnu/ -lmysqlclient (引入动态库)
3.修改后的mysql.pro配置文件如下图:
4.在qsqldriverbase.pri配置文件中做如下修改:
#include($$shadowed($$PWD)/qtsqldrivers-config.pri) (将原来的这一句注释)
include($$shadowed($$PWD)/configure.pri) (添加这样一句话)
修改后的qsqldriverbase.pri配置文件如下图:
5.使用qmake编译(可以直接点击构建)
如果点击构建是报Cannot write file /mkspecs/modules-inst/qt_plugin_qsqlmysql.pri:Cannot create parent qt_plugin.prf
错误,不用慌,这是安装qt时权限没给够导致的;报错图片如下
关闭Qt,使用which qtcreator
命令查询qtcreator的位置
然后使用sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator mysql.pro
(使用绝对路径)命令打开mysql工程,再点击窗口左下角的构建就不会报错了;
注意终端要在mysql.pro所在文件夹右键选择终端打开
然后构建就好了
构建完成后就会生成libqsqlmysql.so(由于Qt版本不同,生成的库文件也有所不同,有的不止一个文件),但生成的库文件不在build-mysql-Desktop_Qt_5_12_12_MinGW_64_bit-Release文件夹中,可以使用sudo find / -name 'libqsqlmysql*’命令搜索文件在哪;
找到libqsqlmysql.so
文件路径后将libqsqlmysql.so
文件复制到qt安装路径下的/usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers文件夹中;命令如下(注意修改为你自己的路径),
sudo cp libqsqlmysql.so /usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers/
但注意是在libqsqlmysql.so所在文件夹路径内右键打开终端
到这一步就配置完成了;
如下图,就完成了
测试MySql驱动配置结果
1.新创建一个工程,在pro文件中加上Qt += sql;
2.在main.cpp中使用QSqlDatabase::drivers()打印所有可用数据库驱动程序的列表;
注意这里编译也是使用相同的编译器,其它编译器还没有配置;
代码如下
#include <QSqlDatabase>
#include <QDebug>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<<QSqlDatabase::drivers();
return a.exec();
}
没有配置的结果如下:
("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
配置了MySql驱动后打印结果如下:
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")