• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql5.1在windows上的编译方法

mysql 搞代码 7年前 (2018-06-05) 118次浏览 已收录 0个评论

mysql5.1在windows下的编译方法

编译步骤

1、从mysql.com上下载最新源码mysql-5.1.35.zip,近40M,需要点耐心 — 中间网站提示我不是可信任的用户,让我填表确认,填了几次都不行,最后将fixfox关了,干了会活再回来有能下载了,呵呵,是不是ORACLE故意制造麻烦,也未可知;

2、解压,阅读INSTALL-SOURCE和INSTALL-WIN-SOURCE这两个安装文件,发现文件写的一塌糊涂,前言不搭后语,总算看了个大概顺序,开始编译安装;

3、编译环境

需要VC2005及以上–呵呵,正好我机器上有个盗版的

编译还需要cmake,这个久仰大名,就是没有用过,从http://www.cmake.org下载了个最新的CMake 2.6,很快安装完成,安装目录D:/CMake 2.6;

4、执行脚本

win/configure.js WITH_INNOBASE_STORAGE_ENGINE WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro

我想支持事务,所以用INNOBASE引擎,这个好像比较出名,在mysql之前已经被oracle收购

5、制作工程

执行win/build-vs8.bat

提示找不到cmake,估计是cmake安装后路径没有加进来,加上

set PATH=%PATH%;D:/CMake 2.6/bin

继续build-vs8.bat成功,cmake真不多,自动给做了一个MySql.sln

6、编译

用vc2005打开MySql.sln ,就是一对工程,开始编译吧,呵呵,一起顺利。但最后提示失败。郁闷!

根据错误提示找到sql_locale.cc文件,发现里面都是乱字符,大概看了一下,这个文件大至是个本地化文件,显示各地的月、星期的表示方法,但印度、日本、韩国、中国等字体都是乱字符,造成字符串””的双引号被转义了,造成了语法错误。我开始不相信有问题,又重新解压了这个文件,发现就是由问题。没办法,baidu一下解决办法,发现查不到,google一下,查到一些信息(呵呵,google就是比百度强)

解决办法:先在ultraEdit中转换为utf-8,然后再在vc2005中打开就没有问题了,看来是文件格式问题。

重新编译就成功了。

7、运行

好不容易在sql/debug目录下找到mysqld.exe(该死的文档中没有说),运行一把,已启动就报错。还好,提示了位置在mysqld.cc中的static void test_lc_time_sz(),哼哼,谁叫我们有源码,直接打开源码看,这个函数调用的就是前面编译不通过的sql_locale.cc,单步跟踪一下,发现原来到日本语的时候,其字符串有三个汉字大小,按宽字符应该是长度为3,当mysql.cc中按utf8字符算长度,长度一下扩大一倍,变成6了,所以对不少,直接 assert退出,google了一下无解,一怒之下将test_lc_time_sz()函数完全屏蔽,呵呵,mysqld就可以正常运行了。(难道这个问题一直没有发现,奇怪)

8、整一个运行环境

按照install文档的说法(当然其目录是错误的,完全按照其说明都找不到文件,郁闷),做了一个安装路径

mkdir D:/mysql
mkdir D:/mysql/bin
mkdir D:/mysql/data
mkdir D:/mysql/share
mkdir D:/mysql/scripts

mkdir D:/mysql/include
mkdir D:/mysql/lib
mkdir D:/mysql/lib/debug
mkdir D:/mysql/lib/opt

mkdir C:/mysql/sql-bench

copy D:/Downloads/mysql-5.1.35/client/debug/*.exe D:/mysql/bin
copy D:/Downloads/mysql-5.1.35/sql/debug/mysqld.exe D:/mysql/bin/mysqld-debug.exe
xcopy D:/Downloads/mysql-5.1.35/scripts/*.* D:/mysql/scripts /E
xcopy D:/Downloads/mysql-5.1.35/sql/share/*.* D:/mysql/share /E

copy D:/Downloads/mysql-5.1.35/libmysql/debug/mysqlclient.lib D:/mysql/lib/debug
copy D:/Downloads/mysql-5.1.35/libmysql/libmysql.* D:/mysql/lib/debug
copy D:/Downloads/mysql-5.1.35/zlib/debug/zlib.* D:/mysql/lib/debug
copy D:/Downloads/mysql-5.1.35/libmysql/debug/mysqlclient.lib d:/mysql/lib/opt
copy D:/Downloads/mysql-5.1.35/include/*.h D:/mysql/include
copy D:/Downloads/mysql-5.1.35/libmysql/libmysql.def D:/mysql/include

在d:/mysqld-debug –console运行

提示一堆错误,有仔细看文档,需要建立一个配置文件

echo %WINDIR%

c:/windows

在这个目录下创建一个文本文件:my.ini

内容

[mysqld]
# set basedir to your installation path
basedir=D:/mysql
# set datadir to the location of your data directory
datadir=D:/mysql/data
注意是/不是/,别搞错了

运行
mysqld-debug.exe –console
打印
Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

查了半天没有找到原因,天晚了,回去睡觉,明天继续。

早上有读文档,google,仍旧没有头绪,网上都是直接binary安装,没有源码编译安装,无前人经验。

分析应该是缺少一些配置文件,找目录,发现win下有个data目录,里面有个mysql目录,下面有timezone, host等文件,貌似配置文件,呵呵。

将win/data目录copy 到d:/mysql/data后,在启动mysqld-debug –console就oK了

9、测试运行环境

mysqladmin version status proc
mysqlshow -u root mysql
mysql test
mysql -u root -e “select Host, Db, User from db” mysql

my god!,都行

关闭server

mysqladmin -u root shutdown

也能正常关闭。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql5.1在windows上的编译方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址