前言
从MySQL驱动源码编译到Qt程序打包彻底解决Qt中使用MySQL数据库的大部分问题。
Qt连接MySQL数据库报错:QMYSQL driver not loaded 一般由Qt与MySQL驱动不匹配问题导致,通过重新编译MySQL驱动源码的方式重新生成匹配的驱动文件;以及打包后数据库连接失败往往是放入打包文件夹的数据库驱动不一致。
编译MySQL数据库
在编写正确MySQL连接配置后依然无法连接成功数据库,并且在控制台报如下错误:
则说明需要重新编译数据库连接驱动。
常见在数据库版本更换,或Qt本身未提供连接驱动或提供的连接驱动不匹配等种种原因。
前提条件:
- 在安装Qt时勾选有源码,或可通过官方途径下载一份Qt源码。
- MySQL数据库,不想安装的可在官网下载对应版本的ZIP数据库压缩包版本。
版本说明:
- 查看Qt编译器版本,需要注意的是后面的位数,Qt编译器位数决定了编译出来的应用程序是32还是64位(少部分电脑只能运行32位程序)
- 数据库版本由当前项目决定,但数据库的位数需要与Qt编译器的一致。
以下操作中以不安装MySQL方式操作,若电脑安装有所需MySQL的,则只需将相关路径更换为MySQL安装路径即可。
在源码中打开MySQL项目,安装时勾选有源码的路径如下:(安装路径下)
使用Qt打开mysql.pro文件并修改该文件内容
- 在最后添加如下内容:其中MYSQL_PATH为MySQL的安装路径或下载的数据库压缩包解压后的路径。
- 注释掉第六行的#QMAKE_USE += mysql
选择对应位数和版本的MinGW编译器,并选择“Release”方式
点击左下角的“锤子”编译会在当前项目中生成一个文件夹
将步骤5中生成的3个文件拷贝到对应的MinGW版本和位数的此目录下
将下载的数据库压缩包内或安装的数据库路径下的lib文件夹下的两个文件,拷贝到对应的编译器bin文件夹下。
完成MySQL数据库驱动编译。
打包为独立的执行程序
在编译项目前选择对应的编译器,并选择“Release”点击运行。
会在你的构建目录下生成文件
进入到该路径下的\release文件夹下找到.exe后缀的文件,并拷贝到一个空文件夹下。
在电脑中搜索“Qt”找到对应版本(对应编译时的版本及位数),对应位数的该程序并打开。
在命令窗口中定位到步骤3中的空文件夹目录下,然后执行如下命令:
windeployqt ×××.exe
其中后面部分为目录下的程序文件。