Qt无法连接MySQL
1.问题示例:
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;
}
}
结果报错:
2.解决方法
2.1 MySQL位数和QT编译器(构建套件)的位数要相同
(1)MySQL查看,打开MySQL命令行,输入密码登录,输入 “ status ” 回车,即可查看:x86_64
(2)Qt 编译器(构建套件)查看
Qt的编译套件的位数一定要与MySql的位数对应
2.2 通过 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数据库
标签:路径,Qt,数据库,MySQL,db,套件,mysql,连接 From: https://www.cnblogs.com/lxd-koi/p/16991210.html-------------------【注意事项】-------------------
- MySQL和构建的套件位数一定要相同。