1.mysql的开发支持库libmysql.dll,我是从安装的mysql中的bin目录下拷贝出来的,
需要将此文件拷贝到Qt\Qt5.10.0\5.10.0\mingw53_32\bin目录下,
要不然程序编译完成运行时也会报错Driver not load.Driver not load.
2.查看Qt\Qt5.10.0\5.10.0\mingw53_32\plugins\sqldrivers目录下有没有
qsqlmysql.dll和qsqlmysqld.dll两个动态库文件,如果没有需要编译mysql的Qt驱动,看5的步骤;
3.创建ImageCanvas文件夹,将release中生成的ImageCanvas.exe文件拷贝进新建的ImageCanvas文件夹;
将源码目录下的config文件夹、data文件夹、libyaml-cpp.a、yaml-cpp.dll、yaml-cpp.dll.a拷贝进ImageCanvas文件夹;
将libmysql.dll拷贝进ImageCanvas文件夹;
4.打开Qt的命令行模式,切换进入当前创建的ImageCanvas文件夹下,运行指令windeployqt ImageCanvas.exe
软件会自动把Qt中的支持库抽取出来;

5.Qt5.10安装的时候可以选择安装源码,如果不想卸载重装Qt,可以下载Qt5.10的源码,编译mysql的源码即可;

1)如果要安装数据库的话下载这个mysql-installer-community-5.7.18.1.msi,我装的mysql是32位的
,你安装的时候选择custom,选择安装mysqlserver,选择安装32位数据库服务器,修改路径,MySQL Server 5.7这样带空格的改成MySQL-Server-5.7,否则编译时候会报错,如果不改也行,修改mysql.pro的时候,加上引号

INCLUDEPATH += "F:\\mysqlserver\\app\\MySQL-Server-5.7\\include"
LIBS += "F:\\mysqlserver\\app\\MySQL-Server-5.7\\lib\\libmysql.lib"

2)进入Qt\Qt5.10.0\5.10.0\Src\qtbase\src\plugins\sqldrivers目录,修改qsqldriverbase.pri文件将

include($$shadowed($$PWD)/qtsqldrivers-config.pri)

修改为

include($$shadowed($$PWD)/configure.pri)

3) 进入Qt\Qt5.10.0\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql目录,
注释掉QMAKE_USE += mysql,变成

# QMAKE_USE += mysql

4)在  # QMAKE_USE += mysql 下添加数据库开发库的路径,你自己安装的mysql下面有这些路径

INCLUDEPATH += F:\\mysqlserver\\app\\MySQL-Server-5.7\\include
LIBS += F:\\mysqlserver\\app\\MySQL-Server-5.7\\lib\\libmysql.lib

5)通过Qt的命令行终端进入
Qt\Qt5.10.0\5.10.0\Src\qtbase\src\plugins\sqldrivers\mysql
执行qmake mysql.pro指令生成Makefile
然后执行mingw32-make编译生成qt的mysql驱动
生成的驱动在这个目录下
Qt\Qt5.10.0\5.10.0\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers
将4个生成的qsqlmysql.dll、qsqlmysqld.dll、libqsqlmysql.a、libqsqlmysqld.a文件拷贝到Qt\Qt5.10.0\5.10.0\mingw53_32\plugins\sqldrivers下,驱动加载的整个过程算是完成。

6) 部分电脑出现Driver not load. Driver not load.的错误,我再main.cpp中添加了

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+ QDir::separator()+"plugins");
QApplication::addLibraryPath(strLibPath);

将qsqlmysql.dll、qsqlmysqld.dll拷贝到plugins/sqldrivers/下,依然会报错,我换了Qt5.9.3 Qt5.9.7 Qt5.10.0都没有解决这个问题。。。。。。

后来我又遇到一种情况,不管按照上面的方法怎么修改,一直出现

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
QSqlError("", "Driver not loaded", "Driver not loaded")

编译mysql.pro工程的时候出现问题

.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x160): undefined reference to `
mysql_num_rows@4'
.obj/release/qsql_mysql.o:qsql_mysql.cpp:(.text+0x18b): undefined reference to `
mysql_stmt_num_rows@4'
....

undefined reference to `mysql_init@4'

后来发现是驱动问题,因为用QT写的是32位程序,而引入的dll是64位,解决办法:下载32位驱动

下载zip的mysql压缩包,按照下面网址操作安装mysql

https://www.cnblogs.com/hupoykitty/p/11605220.html

https://www.cnblogs.com/hcl1991/p/9055378.html

修改可以远程访问mysql

https://www.cnblogs.com/gdsblog/p/7349551.html

修改完成之后登录会出现

问题1:

Can't connect to MySQL server (10060)

解决方法

https://www.cnblogs.com/mmzs/p/9201558.html

我这里出现的问题是win10的防火墙没有开放mysql 3306的端口

端口开放的解决办法

https://blog.csdn.net/yj19961126/article/details/81224107?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

问题2:

1045-Access denied for user 'root'@'localhost'或者@“ip”

修改方法参照

https://blog.csdn.net/qq_36735409/article/details/78032144

大致意思是可以将授权的语句改成:

grant all privileges on *.* to 'root'@'192.168.0.103' identified by '123456';
如果你是本地登录的,那么:
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
当然你也可以直接改成这样:
grant all privileges on *.* to 'root'@'%' identified by '123456';
就可以给所有ip都设定root登陆了。
如果授权成功,会有Query OK的提示。
然后:
flush privileges;
这个是刷新授权的意思,如果没有这句话,授权可能无法立刻生效。
exit;

重新编译mysql.pro

然后编译拷贝,程序可以正常运行

时隔多月再次添加问题解决办法,有些电脑需要添加微软运行库,否则就会出现driver not load这样得问题。

qt5应用程序打包发布和qt5的mysql驱动编译相关推荐

  1. VS2015+QT5.8 程序打包发布详解(包含图片打包,附工具和源码)

    之前按照百度的发布教程,在自己的电脑打得开,在别人电脑打不开,弄了一会,总结的经验如下: 1.打包程序 第一步:在vs2015中,以release方式调试程序,然后会在项目文件夹的x64\releas ...

  2. Qt5.9程序打包发布

    (Windows平台)Qt编译的程序如何在其他没有安装Qt的电脑上运行呢,本文将告诉你答案 文章目录 编译工程 运行windeployqt 添加必要的库 遇到的一个问题 编译工程 这里拿官方的一个例程 ...

  3. QT5的程序打包发布(Windows)

    一.平台及工具 1.平台 win10 Pro + QT5.7 2.QT5自带的windeployqt(这个大家不需要下载安装),另外一个是Engima Virtual Box,这是下载链接Engima ...

  4. QT5的程序打包(将QT5的工程项目打包成一个exe程序)

    将工程打包成一个可执行文件,使用的时候就不需要在工程目录下打开,只需给需要此工具的同事仅发送个打包后的.exe文件即可 需要安装的打包软件:https://enigmaprotector.com/en ...

  5. QT5开发的程序打包发布

    一.开发平台 QT5开发的程序打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了. 自己用的QT版本是 我的电脑系统是WIn10专业版的. 二.介绍一下打包 ...

  6. QT的程序打包发布(将QT5的工程项目打包成一个可直接运行的exe程序)

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:https://blog.csdn.net/lxj434368832/article/details/80814388 Qt 官 ...

  7. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  8. qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...

  9. Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...

最新文章

  1. Windows系统安装Oracle 11g客户端
  2. 阿里巴巴的持久层抛弃了hibernate,采用的却是MyBatis框架。。。
  3. 可能会用到的弹出框用法
  4. SpringMVC中@GetMapping和@RequestMapping的区别
  5. OpenGL基于PBR的图像的光照IBL的实例
  6. .net工程师至少要懂的东西
  7. 面向对象方法使用gluon
  8. [PHP] 日期与时间
  9. 华为鸿蒙5g售价,华为首款5G手机售价公布,余承东透露鸿蒙将用于连接家庭设备...
  10. pytorch clamp 与clamp_区别
  11. 真我手机信号好还是苹果三星信号好?
  12. mesh 协调器 路由器_北京无线路由收发器C32MESH
  13. VS中使用码云gitee建立源代码管理
  14. 谷粒商城-10-p193-p247
  15. N卡和A卡有什么区别?A卡和N卡的区别,一个动图秒懂
  16. 鸿蒙系统会碎片化吗,华为鸿蒙系统,解决安卓碎片化问题,4G流畅度媲美12G!...
  17. 使用回溯法求解N皇后问题
  18. seleniumwire获取百度指数
  19. Swift 网络请求——Moya的使用
  20. Matplotlib 绘制条形图

热门文章

  1. Js 日期字符串分别截取 年 月 日 时 分 秒
  2. ERP开发的一些闲话—之一
  3. 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
  4. PC usb蓝牙发射器
  5. 论文阅读——Multi-Scale Image Contextual Attention Learning for Inpainting
  6. android遥控器适配
  7. 在html网页上在线连接邮箱,怎么在html中创建超级链接和电子邮件链接
  8. PHP项目实战之商品的增删改查
  9. 业务知识 - 行业笔记
  10. 020.验证二叉搜索树