湖南大学夏季小学期-数据库系统设计与实现-用VS2019编译Mysql8.0.25

本文详细介绍了如何在Windows环境下,通过VS2019编译MySQL源码并进行调试。步骤包括安装必要的软件如bison、Boost、Cmake和VS2019,配置Cmake参数,修改源码文件以消除警告,以及在VS中设置启动选项。在调试过程中,可能会遇到端口占用、密码错误等问题,文中也给出了相应的解决办法。最后,文章提供了成功运行的验证步骤和提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.准备工作,下面是需要安装下载的

(1)bison安装使用:下载时候选择“Completepackage exceptsources”,安装路径不要选择默认C:\ProgramFiles\GnuWin32,选 C:\GnuWin32,把C:\Gnuwin32\bin加载到PATH变量。

下载路径:http://gnuwin32.sourceforge.net/packages/bison.htm
(2)Boost下载:https://www.boost.org/users/history/
自己选择版本下载,老师给的版本应该是下载1.73版本最佳
在这里插入图片描述
(3)Cmake下载:https://cmake.org/download/
(4)vs2019
(5)mysql源码下载:https://dev.mysql.com/downloads/mysql/(这里用老师给的代码就好了,也可以自己去下载。)
在这里插入图片描述
2.接下来在新下载下来的mysql源码里,新建一个boost文件夹,将下载的boost压缩包放入其中,然后再新建一个 brelease 文件夹可用于存放最终生成的MySql.sln。
控制台进入文件夹:输入下列命令:

cmake ..  -DDOWNLOAD_BOOST=1 -DWITH_BOOST="E:\University3\summerterm\mysql-8.0.25\boost\boost_1_73_0.tar.gz"

注意:

  1. -DDOWNLOAD_BOOST=1也可以删除,因为你已经下载了boost的话
  2. 在这里你可能会发生报错,错误的原因是没有找到对应的资源,这时候你就应该去前面的error那里查找是不是因为自己下载的版本不匹配,比如人家需要的是1.73版本但是你下载的是1.74版本。
    执行完成后,差不多是这个样子
    在这里插入图片描述

这个时候我们vs需要的.sln文件就出来了
在这里插入图片描述
3.接下来我们就可以愉快的在VS2019 build solution了(对应生成解决方案),但为了尽可能减少警告或错误,我们首先需要对下述文件进行修改:
源码目录\strings\ctype-czech.c
源码目录\strings\ctype-latin1.
源码目录\strings\decimal.c
源码目录\mysys\thr_mutex.c
源码目录\storage\innobase\include\ut0mem.h
源码目录\sql\sql_locale.cc
修改的方法很简单,就是将这些文件以UTF-8(带BOM头的)格式保存。一般使用Nodepad++工具等。
在这里插入图片描述
在这里插入图片描述

最后一步就是找到{install}\mysql-8.0.21\sql\mysqld.cc中的test_lc_time_sz()函数,将其中的DBUG_ASSERT(0)改为DBUG_ASSERT(1)即可。
在这里插入图片描述
4.至此我们就完成了将源码转换成VS中工程文件的目的。之后我们就可以build solution了。如果没有错误说明就已经没有问题了,一些小的警告可能是因为C++编译器比C编译器严格的缘故
如果有错误,大概率是没有符合UTF-8格式,只需要将错误的代码转下格式即可。
一般错误形式为,C2001,C2044.换行错误之类的。这些你看代码感觉都没问题,只能去修改格式。
接下来就可以愉快的进行调试了
5.找到mysqld(mysqld项目是mysql的启动项目,main函数也在其中),右击点到属性,添 --console --initialize,(初始化会在控制台看到链接数据库的密码):
在这里插入图片描述
在这里插入图片描述

记得保存数据库的初始密码,待会要用
在这里插入图片描述
6.接着继续右击mysqld,选择调试,再选择启动新实例即可
在这里插入图片描述
注意:
(1)初始化后获取了密码后,控制台就会报错,这个是没关系的。我们在下次调试之前将–initialize删除重新启动新实例即可
(2)如果这个服务器启动后,用给的初始化密码报错(包含Using Password :Yes)的话
在这里插入图片描述
解决办法:–console 后面再加上一个–UPGRADE=FORCE,重新启动新实例,同样会报错(没事的)。再把这个参数删除再启动就可以了。
(3)客户端连接上服务器后还会要求你改密码,你把提示粘贴到百度搜一下就可以找到修改方法改掉。
(4)参数前面都两个-;
(5)使用此方法之前,必须确保你之前的Mysql已经删除干净,否则就会出现下面的错误
在这里插入图片描述
这是因为你之前没删掉的Mysql占用了端口号,导致新的Mysql没法用现在的端口。出现这种错误会在VS控制台报一个无法启动Mysql.exe的错误。
解决办法:彻底删除原有的Mysql
(Mysql的删除办法自行百度,不再赘述)
(6)如果出现以下错误:
在这里插入图片描述
只需要将出错的目录,比如我这里是data里面的内容全部清空即可。
最终如果没有错误,跑通了的结果如下:
在这里插入图片描述

7.最后,在
在这里插入图片描述
目录下,启动命令提示符,然后按Mysql启动方式(具体见注意事项第二条),输入密码,即可成功建立。最后成功的结果如下:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值