开发电脑:qt版本Qt 5.9.9 (MinGW 5.3.0 32-bit) MySQL版本MySQL5.7
windeployqt打包后,运行报错 driver not loaded 。将该动态库F:\Program Files (x86)\MySQL\MySQL Server 5.7\lib\libmysql.dll复制到.exe同级目录下,即可正常运行。一定要32位MySQL安装目录下的才行。和qt位数一致。
将.exe文件及其所在文件夹发送到没装MySQL的电脑上运行,会报错如下图

解决:再改电脑上安装MySQL,安装的是MySQL Server 8.0 64位,
安装选择的是随便选的only server不知道有什么区别。
安装成功后,再次运行.exe文件,会报错

此时qt连接到MySQL,但是找不到info;
使用控制台创建数据库(和表格);
有些系统上CREATE DATABASE要大写才行,
创建表格过程中id格式写成了varchar,一直创建不成功,也要注意。

创建完成,再次打开exe文件,就可以正常连接数据库,并对库进行操作

总结:
-
exe文件中添加32位的libmysql.dll动态库,
-
电脑中安装MySQL,32位,64位应该都可以,这里是用32位qt生成的程序,新电脑里安装的是64位MySQL,是没问题的
-
创建数据库和表,因为我的程序里没有这个创建部分
使用release生成的exe文件进行打包,50M多;使用debug生成的exe文件打包,有600M。
release用来发布,debug用来调试。
windeployqt打包好后,运行exe文件,此时删除动态库,可以删除20M的动态库。
本来打算,不安装MySQL找了很多方法,涉及到这些动态库libcrypto-1_1-x64.dll和libssl-1_1-x64.dll libeay32.dll,ssleay32.dll
把mysql的安装目录Connector C++下的libeay32.dll和ssleay32.dll两个库拷到运行程序同一目录下
这些都没有解决问题,选择了安装MySQL。
还是用sqlite方便些,qt可以创建sqlite数据库,也不用在电脑上多安装软件。