命令行登录mysql提示Segmentation fault解决办法

www.111cn.net 更新:2015-08-23 编辑:yahoo 来源:转载
我们自己编译的mysql,在使用命令行登录时,提示该错误,经过查阅资料,解决方案如下在源代码目录中,编辑文件 cmd-line-utils/libedit/terminal.c2、terminal_set 方法中:a、注释 char buf[TC_BUFSIZE];b、把 area = buf; 改为 area = NULL;就可以了,具体的方法如下。


使用时报错如下

[root@localhost bin]# ./mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.6.24 Source distribution
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Segmentation fault
mysql版本是5.6.24
服务器是CentOS7.0

==========解决方法1============

在源码包里,编辑文件 cmd-line-utils/libedit/terminal.c
把terminal_set方法中的 char buf[TC_BUFSIZE]; 这一行注释,再把 area = buf;改为 area = NULL;
更改后如下

protected int 
terminal_set(EditLine *el, const char *term) 
{ 
int i; 
/*char buf[TC_BUFSIZE];*/ 
char *area; 
const struct termcapstr *t; 
sigset_t oset, nset; 
int lins, cols; 
--phpfensi.com 
(void) sigemptyset(&nset); 
(void) sigaddset(&nset, SIGWINCH); 
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
area = NULL;


然后重新编译即可