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

尝试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,放在程序执行文件夹即可(就近调用)
 

你可能感兴趣的:(QT,MATLAB)