命令行登錄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之后正常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM