QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: QMYSQL driver not loaded,第1张

qt中mysql插件相关的文件有两个动态库qsqlmysql4.dll和libmysql.dll;qsqlmysql4.dll要放在exe目录下的\plugins\sqldrivers下。libmysql.dll则放在exe目录下即可。但这样做之后还是不行,后来发现libmysql.dll居然依赖vcruntime140.dll,是vs2015运行时的一个库。所以安装Microsoft Visual C++ 2015 Redistributable (x86) - 14.0.23026问题解决。

连接Mysql数据库需要添加数据库的类型是QMYSQL,不是QSQLITE,QSQLITE对应的数据库管理系统是SQLite。

QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL")

这样的话,你调用下lastError,看一下为什么。

官方文档对QSqlDatabase open方法的说明原话:

Opens the database connection using the current connection values. Returns true on successotherwise returns false. Error information can be retrieved using lastError().

注意编译器一定要和MYSQL的平台版本一致,32位的用32位的编译器编译,64位的用64位的编译器编译。

准备工作:MYSQL的目录:D:\SQL_Server\mariadb

Qt5.1.1的目录:C:\Qt

1. 先将D:\SQL_Server\mariadb中的include\和lib\文件夹复制到根目录(C:),因为后面make时路径不能有空格。

2. 打开QT5.1.1 for Desktop(MinGW 4.8)

cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql

qmake "INCLUDEPATH+=D:\SQL_Server\mariadb\include" "LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib" mysql.pro

mingw32-make

如果出现找不到mysql.h文件就用qtcreator打开mysql.pro文件,配置项目,然后编译,就会出现错误提示,把#include <mysql.h>改成#include <mysql/mysql.h>,编译就行了,或回到命令行再次执行mingw32-make即可.

3. 编译成功后。

进入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目录下,选中qsqlmysql.dll和 qsqlmysqld.dll两个文件,

复制到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目录下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6175657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存