当你出现driver not loaded的时候,千万别被百度上大把大把的解决方案误导了……
Mysql driver not loaded
2019.01.16
首先必须庆祝一下;其次,要感谢帮助我的原同事。
来正题,我在华为云上开通了远程数据库,在本地通过qt连接。开始即出现Mysql driver not loaded。百度上一查,天呐,解决方案一堆,可以说挨个试了,答案是No。后来又Google,方法和百度类似,但也有不同的地方,也都试了,原本以为会OK,但和百度的效果一样。就这个,折腾了10几天,也低落了10几天。
我用的qt-5.12.0+msvc2017 32bit和64bit。一开始打算用32bit,考虑兼容性。当出现问题时,百度说因为使用的libmysql.dll与qt中的mysql驱动库不匹配,版本、位数不匹配。当然,位数肯定是确认过了,至于版本,那就按照百度的说法,自己编译了一把。具体编译方法可以百度。但问题依然,如下图所示。
在百般无奈之下,请教各路人马,不过都是原同事,有的电话或者即使聊天工具,也给说了一些,但无非都是百度上描述的问题。今天下午一个原同事,约的见面,但他在工作的时候已经在帮我试这个问题。后来,同事改写了数据库QSqlDatabase的创建方式。竟然好了。上代码……
我的代码如下:
QSqlDatabase *db; //在头文件中定义
db = new QSqlDatabase;
db->QSqlDatabase::addDatabase("QMYSQL");
db->setHostName(SQL_HOSTNAME);
db->setPort(SQL_PORT);
db->setDatabaseName(SQL_DBNAME);
db->setUserName(SQL_USERNAME);
db->setPassword(SQL_PASSWD);
if (!db->open()) {
qDebug("Sql connect failed.");
qDebug() << db->lastError().text();
QMessageBox::warning(nullptr, "警告", "无法连接数据库");
} else {
qDebug("Sql connected.");
}
我同事给我试的代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName(SQL_HOSTNAME);
db.setPort(SQL_PORT);
db.setDatabaseName(SQL_DBNAME);
db.setUserName(SQL_USERNAME);
db.setPassword(SQL_PASSWD);
if (!db.open()) {
qDebug("Sql connect failed.");
qDebug() << db.lastError().text();
QMessageBox::warning(nullptr, "警告", "无法连接数据库");
} else {
qDebug("Sql connected.");
}
不知道大家看出端倪否,就这个坑,看着不大,却让我在坑里摸爬滚打了10几天。至于原因,后面再查查吧,总之就是这个问题困扰10多天后得以解决。继续下一步吧……
最后想知道,这两种写法有什么区别?为什么会导致这个问题???
- WCF技术剖析之三十一: WCF事务编程[下篇]
- WCF技术剖析之三十一:WCF事务编程[上篇]
- 学习SpringMVC——你们要的REST风格的CRUD来了
- 并发中的同步--WCF并发体系的同步机制实现
- WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[下篇]
- 学习SpringMVC——从HelloWorld开始
- 小程序年底重磅更新,小游戏上线,最强入口也来了!
- 学习SpringMVC——如何获取请求参数
- 谈谈关于MVP模式中V-P交互问题
- 学习Spring——两个你熟悉的不能再熟悉的场景使用
- 学习Spring——依赖注入
- 机会真的多吗?
- 浅析Hadoop大数据分析与应用
- WCF技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[上篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【大家的项目】code-minimap
- 尤大 几天前发在 GitHub 上的 vue-lit 是啥?
- 用回溯算法求解数独问题
- bug 回忆录(四)
- 新手入门系列之-React / Vue 应用持续集成Docker 化
- Android 获取进程名函数,如何优化到极致?
- R语言做K均值聚类的一个简单小例子
- 如何自动化Salesforce应用程序
- 2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!
- 最全总结 | 聊聊 Python 数据处理全家桶(MongoDB 篇)
- R函数
- unstack函数应用——生成单细胞marker基因表格
- 手把手教你使用Python打造一个智能搜索淘宝商品,生成操作日志的系统
- leetcode树之将有序数组转换为二叉搜索树
- Mysql必知必会!