2009年09月23日

如何在Windows下编译或调试MySQL

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式:select unhex(’777562696E67786940676D61696C2E636F6D’); 载请注明作/译者和出处,并且不能用于商业用途,违者必究。  

为什么需要在Windows下编译MySQL

    在Linux下编译MySQL是非常方便的操作,而且是轻车熟路,很容易搞定的。随着对MySQL的使用时间的增长,也慢慢的对MySQL代码的分析有点感兴趣了。所以想着找一个工具去学习一下MySQL的代码,对于Linux用户可以使用vim+ctags去分析,

但做为大多数用户来说工作的平台还都是windows平台。所以就需要在windows上去调试MySQL了。

对于下载的MySQL在Windows平台上无法直接编译的,工程文件没了,这里关建问题就是怎么创建一个工程文件。下面我装分几步去讲解,怎么去创建工程文件,怎么调试,怎么编译。

 

准备工作:

  安装一个编译器,推荐Microsoft visual studio 2008吧

  另外需要装:

         GNU Bison for Windows :http://gnuwin32.sourceforge.net/packages/bison.htm

         CMake 2.6.0 or later  :  http://www.cmake.org

开始编译:

这里以mysql-5.1.38的源码编译为例:

mysql-5.1.38的代码下载可以到mysql官方网站下载,具体怎么下载不在说明。

 

 打开一个cmd窗口:

 输入:

 cscript //H:CScript

 然后:

 cd /path/mysql-5.1.38

 win\configure WITH_INNOBASE_STORAGE_ENGINE __NT__

 win\build-vs9.bat

 

        到此我们将会创建一个mysql.sln 的工程文件,如果对想学习代码的朋友,到此即可以,然后可以用Microsoft visual studio 2008打开这个文件就可以查看相应的代码了。

 

 如果需要调试或单步执行调试:

         这里以mysqld项目为例:

   打开项目 mysqld 的属性 点击 debugging

在mysqld的属性页设置命令参数(Command Arguments)为:–console。这样就可以用debug方式调试代码了。

  

         同样对于其它项目的调试,也是这样处理,属性,添加命令行参数:–console。

 build-mysql-vs

         对于想跟踪的项目可以执行build,然后可以在mysql-5.1.38/client/Debug下生成相应的执行文件。

 

如果真的想编译一个Windows的MySQL,上面那个打开步骤可以不做。接着上面完成的bat后,直接进行:

vcbuild mysql.sln “Release”

进行编译。然后拷mysqld.exe及相应的文件到相应的目录就OK了。具体怎么安装,这里也不在说明了。本文档的核心目的就是教会大家怎么创建工程文件,然后怎么去调试。

drupal转worldpress

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式:select unhex(’777562696E67786940676D61696C2E636F6D’); 载请注明作/译者和出处,并且不能用于商业用途,违者必究。

用Drupal太灵活了,灵活的我都搞不定了。所以我投向了worldpress.对比了一下表结构。参考网上的说明搞出了:

use support;
delete from wp_posts;    
delete from wp_comments;

# posts
INSERT INTO
    wp_posts (id, post_date, post_content, post_title,
    post_excerpt, post_name, post_modified)
SELECT DISTINCT
    n.nid, FROM_UNIXTIME(created), body, n.title,
    teaser,
    REPLACE(REPLACE(REPLACE(REPLACE(LOWER(n.title),’ ‘, ‘_’),’.', ‘_’),’,', ‘_’),’+', ‘_’),
    FROM_UNIXTIME(changed)
FROM  drupal_bak.node n, drupal_bak.node_revisions r
WHERE n.vid = r.vid;

# comments
INSERT INTO
    wp_comments
    (comment_post_ID, comment_date, comment_content, comment_parent, comment_author, comment_author_email, comment_author_url)
SELECT
    nid, FROM_UNIXTIME(timestamp),
    comment, thread, name, mail, homepage
FROM drupal_bak.comments ;

# update comments count on wp_posts table
UPDATE `wp_posts` SET `comment_count` = (SELECT COUNT(`comment_post_id`) FROM `wp_comments` WHERE `wp_posts`.`id` = `wp_comments`.`comment_post_id`);

# fix post slugs. first we have to remove the duplicate _____ chars, then replace that with a single – char
UPDATE wp_posts set post_name = REPLACE(post_name, ‘__’, ‘_’);
UPDATE wp_posts set post_name = REPLACE(post_name, ‘__’, ‘_’);
UPDATE wp_posts set post_name = REPLACE(post_name, ‘__’, ‘_’);
UPDATE wp_posts set post_name = REPLACE(post_name, ‘__’, ‘_’);
UPDATE wp_posts set post_name = REPLACE(post_name, ‘_’, ‘-’);

 

然后就可以看到worldpress工作了。