[填坑]QT5.12 + MYSQL8.0 + VS2017解决各种报错问题

7 篇文章 1 订阅

尝试1:

https://blog.csdn.net/qq_29176963/article/details/82776559

将C:\Program Files\MySQL\MySQL Server 8.0\lib 下的ilbmysql.lib和libmysql.dll复制到 D:\Qt\5.12.0\msvc2017_64的bin和lib目录下 ,提示QMYSQL driver not load 
还有其他教程提示C:\Program Files\MySQL\MySQL Server 8.0\bin中若干文件进行复制依旧没有用
原因:5.12Qt的mysql 驱动可能和 安装的mysql 的版本不一样
 

尝试2:

解决问题 Qt + MySql:"QSqlDatabase: QMYSQL driver not loaded"

https://blog.csdn.net/sigmarising/article/details/80664639

重新下载Connector/C++驱动https://dev.mysql.com/downloads/connector/cpp/ ,结果8.0版本,压缩包内并没有ilbmysql.lib和libmysql.dll,只有vs14编译的动态链接库

 

尝试3:

使用ODBC连接mysql

https://blog.csdn.net/qq_37105120/article/details/84000341
VS2017解决不了问题,提示“由于系统错误 182: (MySQL ODBC 8.0 ANSI Driver, C:\\Program Files\\MySQL\\Connector ODBC 8.0\\myodbc8a.dll),指定驱动程序无法加载。 QODBC3: Unable to connect”

 

最终:

回退到MySQL5.6版本依旧无法运行!

新建一个空白项目,MySQL5.6可以运行!最终排查发现QT MySQL库与项目中包含的MATLAB DLL冲突!应该是需要同时加载同名不同版本dll引起的冲突。

解决方案:调整环境变量顺序,删除无关的环境变量

QT5.12与MySQL8.0配合也没有任何问题!!!但是相比MySQL5.6还要多添加 libeay32.dll 和ssleay32.dll

Beside libmysql.dll and qsqlmysql.dll, other two *.dll files are also necessary (but no solution I searched refers to them): libeay32.dll and ssleay32.dll, they are located at MySql/bin/. For my computer, they are contained in the system path, while for other computers that do not install MySql, they lack these two. Thus, we need to copy them to the package as well.
https://stackoverflow.com/questions/51943259/deploy-qt-mysql-application

 

经验教训:

1、添加新功能若遇到难解问题,新建空白项目测试,看是否是冲突bug

2、不要轻易添加和调整系统变量顺序,要从上到下有逻辑

3、不要轻易往系统bin文件夹添加或替换动态链接库,如果程序特殊需要,放在程序执行文件夹即可(就近调用)

4、不要轻易往编译工具lib/bin文件夹放dll,放在程序执行文件夹即可(就近调用)
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值