关于Qt5.12.9 无法加载mysql驱动,需要重新编译MYSQL数据库驱动的问题以及解决方案

2020-11-07 13:31:20  阅读 3846 次 评论 0 条

参考了https://blog.csdn.net/u011489205/article/details/90313829 自己改了点


环境:deepin 15.11 + QT5.12.9 

问题描述:

  1. QSqlDatabase: MYSQL driver not loadedQSqlDatabase:
    available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7




解决方法:


解决方案:

1. 安装QT源代码。

QT安装包提供了源代码,安装QT时可以选择安装源代码,也可以单独到QT官方网站下载源代码。

2. 安装依赖库

sudo apt-get install mysql-client libmysqlclient-dev


我用了 下面的语句
sudo apt-get install libmysql++-dev

1:sudo apt-get install libmysql++-dev 这一步是为了安装MYSQL的头文件和libmysqlclient.so库,如果系统有安装过mysql,可能以上依赖已经安装在系统中。安装完成以后mysql的头文件位置一般在/usr/include/mysql, 而共享库在下面几个目录其中:/usr/lib/mysql/ ,/usr/local/lib,/usr/liib/x86_64-linux-gnu。

如该没有没有mySQL 源也没啥:可以安装MariaDB

参考: http://jinesc.net/?id=271 

注意mySQL.h的位置就不一样了


可通过以下命令定位mysql.h的位置:

sudo find / -name "mysql.h"

可通过以下命令定位libmysqlclient.so的位置:

sudo find / -name "libmysqlclient.so"

3. 编译安装QT MySQL驱动包

(1)进入qt源代码路径下的mysql目录(这里的目录因人而异,是你本地安装QT源代码的目录,我这里是/home/jinesc/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrivers/mysql,其中/home/geek/software/Qt5.12.3是QT的安装目录)。

(2)使用QT自带的qmake命令编译该工程。

root 进去

sudo /home/jinesc/Qt5.12.9/5.12.9/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro 

sudo make 

sudo make install

或(mariadb的话)

sudo /home/jinesc/Qt5.12.9/5.12.9/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mariadb" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro 

sudo make 

sudo make install

注意:这里可能遇到两类问题,如下:

(i)类似于qtsqldrivers-config.pri文件找不到的问题:eg.  Cannot read /home/jinesc/Qt5.12.9/5.12.9//Src/qtbase/src/plugins/sqldrivers/qtsqldrivers-config.pri: No such file or directory.

解决方案:修改上一层目录(这里也就是/home/jinesc/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrivers)的qsqldriverbase.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

ii)类似于mysql 库文件找不到的问题,eg:project ERROR: Library 'mysql' is not defined.

解决方案:修改当前目录(这里也就是/home/jinesc/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrivers/mysql)的mysql.pro文件内容,如下:

    1. 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
      
      include(../qsqldriverbase.pri)

3)如果遇到步骤2中遇到的问题,解决完以后重新执行步骤1的编译命令。最后会在QT的plugins/sqldrivers目录下(这里是/home/jinesc/Qt5.12.9/5.12.9/gcc_64/plugins/sqldrivers)找到编译好的mysql共享库文件(libqsqlmysql.so)。

本文地址:http://jinesc.net/?id=213
免责声明:本文为原创文章,版权归 jinesc 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?