编辑环境:

操作系统:win10专业版64位。
QT版本:Qt5.14.1,编译器是mingw73_64,是64位的。
MYSQL版本:mysql-8.0.30-winx64,也是64位的。

我前面已有记录Qt连接mysql5.x的版本的操作,所以这次的操作说明会精简一些。

1. 首先打开进入我的Qt源码文件夹,我的是:F:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql

双击打开mysql.pro。

 

2.  打开后,需要修改两个文件,先修改第一个mysql.pro,如下图所示:

 

4. 修改下一个文件,如图

 

5. 上面两个文件修改完成后,点击Qt左下角的小锤锤,如果没有任何报错就一切OK,接着我们去找一下编译好的dll文件。

还记得上面我们已经设置了编译完成后dll文件的位置,我的是:F:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql8.0\mysqlDll

 

将这个qsqlmysql.dll文件拷贝到Qt的插件目录下,我的是:F:\Qt\Qt5.14.1\5.14.1\mingw73_64\plugins\sqldrivers。

 

接下来还差最后一步,很关键也很重要,比之前的5.x版本多了两个文件了,而且位置不要拷贝错了。

1. 先将mysql8.x的bin目录下的两个文件拷贝至Qt的bin目录下。如图:

我的mysql8.x的bin目录是:F:\mysql-8.0.30-winx64\bin

我的Qt的bin目录是:F:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin

 

最后一个文件是mysql8.x的lib文件夹里的libmysql.dll文件拷贝至Qt的bin目录下:

 

 

上述三个文件拷贝至Qt的bin目录后,就已经完成所有操作了,接下来写代码连接一下mysql8.x服务器,我直接贴图了:

前提别忘了将mysql8.x的服务器先打开,在cmd窗口输入命令:net start mysql  如果报错显示发生系统错误5,拒绝访问就将cmd

的窗口以管理员的权限打开就行了。

 

我开心得编译完然后点击运行,一看结果,脸上得意的笑容逐渐凝固,报错了!!!

报错信息是:"Lost connection to MySQL server at 'reading initial communication packet', system error: 0 QMYSQL: Unable to connect"

手指颤抖着去网上搜,结果说是将mysql8.x的服务重启下就行了,我照做了,然并软。我在cmd窗口里用命令是能够登录mysql的,我第一反应就是我的c++代码里的参数没写对,可乍一看也没毛病啊,我就去把mysql里的hostname看了下,如图是我的mysql里的hostname:


 

我上面的测试代码里的第13行填写的hostname是"127.0.0.1",可我的mysql里并没有这个主机,于是我把第13行改为:

 db.setHostName("localhost");
最后点击编译和运行,终于成功了,开心!

 

终于将这次遇到的坑都记录下来了,主要是防止以后遇到同样的问题,也可以给遇到相同问题的小伙伴提供一个参考和解决思路。
posted on 2022-08-25 10:32  №点缀  阅读(781)  评论(0编辑  收藏  举报