解决QT5.14.2无法连接Mysql数据库出现QSqlDatabase: QMYSQL driver not loaded错误

问题描述:

QT在连接数据库的过程中出现了如下错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7


原因分析:

是因为Qt有些版本没有自带qsqlmysql.so,这时候就需要自己手动编译一下源码,生成这个so文件。

解决方案:

  1. 下载安装QT源代码。安装QT时可以选择安装源代码,也可以单独到QT官方网站下载源代码。

  2. 安装mysql头文件和libmysqlclient.so库。安装完成以后mysql的头文件一般存放在/usr/include/mysql, 而共享库存放在下面几个路径:/usr/lib/mysql/ 、/usr/local/lib、/usr/lib/x86_64-linux-gnu。

sudo apt-get install mysql-client libmysqlclient-dev
  1. 定位libmysqlclient.so的位置,一般在/usr/lib/x86_64-linux-gnu,方便之后添加库路径。
sudo updatedb #更新ubuntu的文件数据库
sudo locate libmysqlclient.so
  1. 为了在编译时避免出现project ERROR: Library ‘mysql’ is not defined.错误,定位到/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql,将mysql.pro文件中QMAKE_USE += mysql注释掉。
TARGET = qsqlmysql
 
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
 
# 把mysql.pro中的 QMAKE_USE += mysql用#注释掉
# QMAKE_USE += mysql
 
OTHER_FILES += mysql.json
 
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

  1. 为了在编译时避免出现找不到qtsqldrivers-config.pri文件的错误,定位到/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers 将qtsqldriverbase.pri文件中qtsqldrivers-config.pri那行代码注释掉。
QT  = core core-private sql-private
 
# For QMAKE_USE in the parent projects.
# include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include($$shadowed($$PWD)/configure.pri)
PLUGIN_TYPE = sqldrivers
  1. 编译安装QT mysql驱动包
sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro
 
make && make install
  1. 如果顺利,基于QT编译的mysql驱动包已经操作完成!

你可能感兴趣的:(qt,mysql)