Qt数据库连接问题

Qt无法连接MySQL#

问题示例:#

bool ConnectDatabase::connectMySQL()
{
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("edu");
    db.setUserName("root");
    db.setPassword("xxxxxxxx");

    if(!db.open())
    {
        qDebug() << "数据库打开失败";
        return false;
    }else
    {
        qDebug() << "数据库打开成功";
        return true;
    }

}

结果报错:

解决方法#

MySQL位数和QT编译器(构建套件)的位数要相同#

(1)MySQL查看,打开MySQL命令行,输入密码登录,输入 “ status ” 回车,即可查看:x86_64

(2)Qt 编译器(构建套件)查看

Qt的编译套件的位数一定要与MySql的位数对应

通过 Qt 源码工程编译所需的ddl文件#

(1)找到qt的安装路径,找到源码mysql.pro(在安装qt的时候勾选source才会有),打开。比如我的在这里

“D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql”

(2)通过 Qt 打开后:

添加INCLUDEPATH 、LIBS、 DESTDIR这三个变量

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

#该路径是的Mysql的头文件(include)路径
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"

#这是MySQl的库文件路径
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.dll"

#为了方便查找,增加一条语句,该语句用来指明编译后的结果输出的位置
DESTDIR=../mysql/lib/

注意:QMAKE_USE += mysql需要注释掉,不然会报错

(3)保存 mysql.pro ,然后构建

(4)找到编译后输出的位置 /mysql/lib/

(5)复制 qsqlmysql.ddl

(6)粘贴到对应的那个构建套件的驱动目录下

我的路径为:

“ D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers ”

(7)此时回来运行测试代码

此时依然报错,但多出了QMYSQL QMYSQL3,说明MySQL的驱动已经有了

(8)去MySQL的安装路径下找到 libmysql.ddl,直接搜索就可以

我的路径为:“ C:\Program Files\MySQL\MySQL Server 8.0\lib ”

(9)将 libmysql.ddl 复制到构建套件的 bin 目录下

(10)现在可以正常连接MySQL数据库

-------------------【注意事项】-------------------

  • MySQL和构建的套件位数一定要相同。
posted @   ·LvXudong·  阅读(147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示
主题色彩