QSqlDatabase: QMYSQL driver not loaded

3 篇文章 0 订阅
2 篇文章 0 订阅

环境:
mysql-8.0.11-winx64
qtcreator5.14.2
mingw73_64

示例代码

void MainWindow::sqltest() {
  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("localhost");
  db.setDatabaseName("hello"); //这里输入你的数据库名
  db.setUserName("root");
  db.setPort(3306);
  db.setPassword("123"); //这里输入你的密码
  if (db.open()) {
    qDebug() << "open ok !!!";
  }
  db.close();
  exit(-1);
}

错误

  1. QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

首先他里面是没有MySQL选项(如果有,直接看下面),需要自己编译或者去官网下载套MySQL驱动

编译:
a.进入qtcreator安装路径/版本号\Src\qtbase\src\plugins\sqldrivers\mysql
b.用qtcreator打开mysql.pro
c.修改mysql.pro配置文件
在这里插入图片描述

TARGET = qsqlmysql

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

#QMAKE_USE += mysql 注释掉这行,不然会提示mysql not define

OTHER_FILES += mysql.json

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

#下面这句是附加mysql头文件、动态库、动态库输出路径的配置项
INCLUDEPATH += E:/mysql-8.0.11-winx64/include/
LIBS += E:/mysql-8.0.11-winx64/lib/libmysql.lib
DESTDIR = ../mysql/mysqlDllmsvc

d.修改qsqldriverbase.pri配置文件
在这里插入图片描述

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri) 这行需要注释掉,不要问为什么,跟着做就对了
#添加下面这句
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

e.点击锤子让它生成编译器可以用的MySQL驱动

小插曲:msvc-version.conf loaded but QMAKE_MSC_VER isn't set
解决方法:
在qtcreator安装路径\版本号\msvc2017_64\mkspecs\common\msvc-version.conf文件前面添加QMAKE_MSC_VER = 1900 ,这是叫你指定一下msvc版本号,不要超过msvc-version.conf最高的数字就行。
在这里插入图片描述

mingw的驱动一览

在这里插入图片描述
msvc驱动一览
在这里插入图片描述
f.将编译出来的MySQL驱动复制到qtcreator安装路径\版本号\编译器类型\plugins\sqldrivers\路径下

mingw的驱动一览
在这里插入图片描述
msvc的驱动一览
在这里插入图片描述

  1. QSqlDatabase: QMYSQL driver not loaded
    这部分是在QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7里面有MySQL选项时出现
    解决方案:
    复制MySQL安装路径/lib/下的libmysqld.dll、libmysqld.lib、libmysql.dll、libmysql.libqtcreator安装路径\版本号\编译器类型\bin\路径下
    在这里插入图片描述
    别急,高版本MySQL是没有的,只复制llibmysql.dll、libmysql.lib或许可以,虽然我这里一直失败,没用
    我是直接从MySQL5.7.x版本里扣出来的libmysqld.dll、libmysqld.lib、libmysql.dll、libmysql.lib塞进去用的,还别说,真的能用
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值