突然想学习下mysql,看看mysql的源码,首先就需要把源码编译,这是学习它的第一步。
万事开头难,一点也没错,昨天晚上搞了很久没有弄好,今天回来第一件事就是把这个解决。问题总算解决,对该过程总结如下:
1、下载mysql源码
下载地址http://www.mysql.com/downloads/或百度googlemysql,进入官网下载,选择MySQL Community Server版本,并选择Windows (x86, 64-bit), ZIP Archive
2、解压
新建了目录,mysql,然后把解压的文件全部放在了这文件里
3、准备环境和工具
cmake和bison工具,可以在网上下载这两个工具,bison的安装目录尽量不要出现中文和空格,并记得把bison工具的路径放到环境变量的path中。
4、cmake工具生成.sln项目文件
使用的是VS2008:cmake . -G "Visual Studio 9 2008"或直接用cmake的界面,执行这一步后,.sln就生成了
5、修改sql_locale.cc文件
使用UltraEdit或editplus工具修改文件的格式,转换成UTF-8,网上有些选择UTF-8 without BOM,但是我试了,编译会报错,所以只要转换成UTF-8即可
6、编译
打开项目文件,然后编译mysqld项目,如果有错,再编译一次,一般来讲这样就应该好了,如果不行就多编译几次了
7、启动调试
进入根目录,即sql\debug 运行mysqld.exe --debug --standalone,但是会报错
Assertion failed: 0, file .\mysqld.cc, line 4198
查看了该源文件,是一个断言,注释该断言后,再次运行就可以启动服务器了
如果想使用vs调试,则使用在vs中启动mysqld。
如果还不可以,则查看sql\data目录下是否有数据文件,如果没有可以把安装版下的数据文件拷入data目录中,然后再启动该mysql
这样mysql服务器就启动了
8、结束语
通过对mysql源码的编译,发现主要问题存在几个:
(1)bison工具存在的问题
第一次我的bison环境没有添加到path中,导致使用cmake工具生成sln时,总是出现红色字体,bison无法找到。如果使用cmake时,bison路径没有添加到变量环境中,则添加后,建议重启电脑,否则cmake可能还是找不到bison
(2)sql_locale.cc文件
网上都说这个文件会出错,我想也没想就认为是这样的,以前也编译过mysql,的确会出错,所以对这个文件,应尽量把其格式转换成UTF-8格式
(3)编程成功后,启动出错
我启动时,报错“Assertion failed: 0, file .\mysqld.cc, line 4198”,这个主要是断言出错,可能是这个版本才存在的问题,如果是该错误,只要注释掉该行代码即可
(4)数据文件
如果数据文件不存在,则直接把安装版的数据文件拷入到源码目录的sql\data中,这样处理更加简单
PS:学习MYSQL的第一步顺利完成,希望以后可以有更大的进步,进入内核,了解系统,希望以后可以多写写相关博客,交流学习