当前位置:   article > 正文

QT连接数据库报错_qt databases open 失败

qt databases open 失败

QT连接MySql数据库报错

缺少Mysql驱动
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
MySql database open fail ---  QSqlError("", "Driver not loaded", "Driver not loaded")
  • 1
  • 2
  • 3

原理:QT要连接Mysql,要通过QT的数据库连接插件连接到Mysql的动态库,再连接到MySql

不同版本的QT需要的插件不完全相同

1.修改mysql.pro代码

版本太高,可能会没有这个文件,我的是QT5.14.2
找到这个文件 D:\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
在这里插入图片描述

用QT打开后,修改后点击编译
在这里插入图片描述

TARGET = qsqlmysql

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

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin


win32:LIBS += -LD:/MySQL/MySQLServer5.7/lib -llibmysql

INCLUDEPATH += D:/MySQL/MySQLServer5.7/include

DEPENDPATH += D:/MySQL/MySQLServer5.7/include


include(../qsqldriverbase.pri)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.修改后,点击编译,没有问题直接跳到第3步即可

问题1:error: mysql.h: No such file or directory #include <mysql.h>

​ 这是因为你的文件路径有空格 这几个代码路径不能有空格,直接修改文件路径的话,你的mysql服务会出现问题,无法打开什么的

我试了很久,还是重开吧,我重新又装了一次mysql,注意QT的版本跟MySql的版本要一致,都是64位或者都是32位

win32:LIBS += -LD:/MySQL/MySQLServer5.7/lib -llibmysql

INCLUDEPATH += D:/MySQL/MySQLServer5.7/include

DEPENDPATH += D:/MySQL/MySQLServer5.7/include
  • 1
  • 2
  • 3
  • 4
  • 5

问题2:Cannot read D:/qtsqldrivers-config.pri:No such file or directory

在这里插入图片描述

打开qsqldriverbase.pri文件,将第四行注释掉,即 #include($ s h a d o w e d ( shadowed( shadowed( $PWD)/qtsqldrivers-config.pri)

添加include(./configure.pri)
在这里插入图片描述

解决问题后:编译mysql.pro文件

在这里插入图片描述

3、编译成功后

  1. 可以看到 D盘(你自己QT在哪个盘就在哪里)下有个pluigins文件生成,

复制这两个文件到D:\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
在这里插入图片描述
/
在这里插入图片描述

  1. 再把D:\MySQL\MySQLServer5.7\lib下面的这个文件复制到D:\Qt5.14.2\5.14.2\mingw73_64\bin

在这里插入图片描述

/
在这里插入图片描述

4、测试连接

连接数据库代码:

    //创建数据库类型
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setUserName("");
    db.setPassword("");

    if(!db.open())
    {
        qDebug() <<"MySql database open fail --- " << db.lastError();
    }
    else
    {
        qDebug() <<"MySql database open successfully";
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

成功

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/699800
推荐阅读
相关标签
  

闽ICP备14008679号