命令行登录mysql报Segmentation fault故障解决

现象:

     在本地登录,执行 /usr/local/mysql/bin/mysql -uroot -pxxxxx --socket=/data/mysql/3306/mysqltmp/mysql.sock -A 

报错如下:

     显示完下面信息之后,就显示:

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Segmentation fault (core dumped)

 

测试:

   (1)在其它机器登录,没有问题;说明只是本地mysql的问题;

   (2)在本机执行语句,没问题,而不执行语句,进到命令行状态就有问题,说明只是进入命令行时的报错。

/usr/local/mysql/bin/mysql -uroot -pxxxxxx --socket=/data/mysql/3306/mysqltmp/mysql.sock -e "select * from information_schema.PROCESSLIST where command<>'Sleep';"

  (3)MySQL的错误日志,没有报错:

  (4)操作系统报错如下:

 

解决:

      参考了别人的经验,需要修改源码然后重新编译,便可解决,其它机器这个版本没问题,暂时不知道是否与安装出错有关。

我的版本是5.7.21,如果你使用的是其它版本的MySQL,则需要对应版本的源码:

修改文件:vi mysql-5.7.21/cmd-line-utils/libedit/terminal.c

把terminal_set方法中的 char buf[TC_BUFSIZE]; 这一行注释,再把 area = buf;改为 area = NULL;
更改后如下

之后重新通过cmake,make;make install,重装mysql之后正常。

 

posted on 2018-05-24 15:56  MySQL_SQLServer  阅读(3684)  评论(0编辑  收藏  举报