源码方式安装mysql5.5.8出现sql/CMakeFiles/sql.dir/sp_head.cc.o] Error 1错误解决方法

源码安装mysql-5.5.8版本在make的时候如果遇到以下的错误

 make[2]: *** [sql/CMakeFiles/sql.dir/sp_head.cc.o] Error 1 make[2]:

*** Waiting for unfinished jobs…. make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2 make: *** [all] Error 2

可以根据 http://lists.mysql.com/commits/126782 来解决

 

如果英文不太好的话可以按我说的做 

解压mysql-5.5.8的安装包,configure之后进到解压后的文件夹下 

cd mysql-5.5.8/sql 

修改以下文件: 

sql/sp_head.cc 

sql/sql_connect.cc 

sql/sql_cursor.cc 

sql/sql_parse.cc 

sql/sql_prepare.cc 

具体修改如下: 

把红色部分修改为蓝色的部分然后保存退出 

modified:

      sql/sp_head.cc

      sql/sql_connect.cc

      sql/sql_cursor.cc

      sql/sql_parse.cc

      sql/sql_prepare.cc

=== modified file ‘sql/sp_head.cc’

a/sql/sp_head.cc 2010-11-18 15:01:58 +0000

+++ b/sql/sp_head.cc 2010-12-08 16:47:21 +0000

@@ -3159,7 +3159,7 @@ sp_instr_stmt::exec_core(THD *thd, uint 

   MYSQL_QUERY_EXEC_START(thd->query(),

                          thd->thread_id,

                          (char *) (thd->db ? thd->db : ""),

–                         thd->security_ctx->priv_user,

+                         &thd->security_ctx->priv_user[0],

                          (char *)thd->security_ctx->host_or_ip,

                          3);

   int res= mysql_execute_command(thd);

 

=== modified file ‘sql/sql_connect.cc’

a/sql/sql_connect.cc 2010-12-14 14:34:23 +0000

+++ b/sql/sql_connect.cc 2010-12-08 16:47:21 +0000

@@ -736,7 +736,7 @@ void do_handle_one_connection(THD *thd_a

     if (rc)

       goto end_thread;

 

–    MYSQL_CONNECTION_START(thd->thread_id, thd->security_ctx->priv_user,

+    MYSQL_CONNECTION_START(thd->thread_id, &thd->security_ctx->priv_user[0],

                            (char *) thd->security_ctx->host_or_ip);

 

     prepare_new_connection_state(thd);

 

=== modified file ‘sql/sql_cursor.cc’

a/sql/sql_cursor.cc 2010-11-12 12:56:21 +0000

+++ b/sql/sql_cursor.cc 2010-12-08 16:47:21 +0000

@@ -111,7 +111,7 @@ int mysql_open_cursor(THD *thd, select_r

   MYSQL_QUERY_EXEC_START(thd->query(),

                          thd->thread_id,

                          (char *) (thd->db ? thd->db : ""),

–                         thd->security_ctx->priv_user,

+                         &thd->security_ctx->priv_user[0],

                          (char *) thd->security_ctx->host_or_ip,

                          2);

   rc= mysql_execute_command(thd);

 

=== modified file ‘sql/sql_parse.cc’

a/sql/sql_parse.cc 2010-12-14 14:34:23 +0000

+++ b/sql/sql_parse.cc 2010-12-08 16:47:21 +0000

@@ -877,7 +877,7 @@ bool dispatch_command(enum enum_server_c

   thd->profiling.start_new_query();

 #endif

   MYSQL_COMMAND_START(thd->thread_id, command,

–                      thd->security_ctx->priv_user,

+                      &thd->security_ctx->priv_user[0],

                       (char *) thd->security_ctx->host_or_ip);

   

   thd->command=command;

@@ -1018,7 +1018,7 @@ bool dispatch_command(enum enum_server_c

       break; // fatal error is set

     MYSQL_QUERY_START(thd->query(), thd->thread_id,

                       (char *) (thd->db ? thd->db : ""),

–                      thd->security_ctx->priv_user,

+                      &thd->security_ctx->priv_user[0],

                       (char *) thd->security_ctx->host_or_ip);

     char *packet_end= thd->query() + thd->query_length();

     /* ‘b’ stands for ‘buffer’ parameter’, special for ‘my_snprintf’ */

@@ -1070,7 +1070,7 @@ bool dispatch_command(enum enum_server_c

 

       MYSQL_QUERY_START(beginning_of_next_stmt, thd->thread_id,

                         (char *) (thd->db ? thd->db : ""),

–                        thd->security_ctx->priv_user,

+                        &thd->security_ctx->priv_user[0],

                         (char *) thd->security_ctx->host_or_ip);

 

       thd->set_query_and_id(beginning_of_next_stmt, length,

@@ -5489,7 +5489,7 @@ void mysql_parse(THD *thd, char *rawbuf,

           MYSQL_QUERY_EXEC_START(thd->query(),

                                  thd->thread_id,

                                  (char *) (thd->db ? thd->db : ""),

–                                 thd->security_ctx->priv_user,

+                                 &thd->security_ctx->priv_user[0],

                                  (char *) thd->security_ctx->host_or_ip,

                                  0);

 

 

=== modified file ‘sql/sql_prepare.cc’

— a/sql/sql_prepare.cc 2010-12-14 10:46:00 +0000

+++ b/sql/sql_prepare.cc 2010-12-08 16:47:21 +0000

@@ -3759,7 +3759,7 @@ bool Prepared_statement::execute(String 

       MYSQL_QUERY_EXEC_START(thd->query(),

                              thd->thread_id,

                              (char *) (thd->db ? thd->db : ""),

–                             thd->security_ctx->priv_user,

+                             &thd->security_ctx->priv_user[0],

                              (char *) thd->security_ctx->host_or_ip,

                              1);

       error= mysql_execute_command(thd);

这主要是MSYQL5.5.8的一个BUG,一个数组的读取问题。只要把以上的文件修改了之后就可以正常安装了,我在CentOS 5.5 64位系统下安装通过。

如果不想自己手动修改的读者可以下载我修改好的文件到对应的路径下。点这里下载



如果我的文章能帮助到你我会非常高兴。你的支持是对我的认可,将会大大地鼓励我写更多的文章,哪怕只给我一毛钱:-)

期待您的捐赠
Thanks for donation

沙发被抢了,赶快抢前排!

  1. Kevin 2011-05-24 08:10

    波哥这个精品

    回复

发表评论

带 * 的是必填项目,电子邮件地址不会被公开。
文字的交流也是情感的交流,技能的交流也是学术的交流。

无觅相关文章插件,快速提升流量