MySQL 콘솔 : Ctrl + C로 나를 미치게합니다.


24

MySQL 콘솔에는 저를 방해하는 것이 있습니다. 내가 공격 할 때 ctrl+를 c현재 명령을 취소하려면, 터미널 출구를 입력 되.

모든 터미널 I의 노하우에서 ( *nix터미널, Python, PostgreSQL), ctrl+는 c현재 명령을 취소하고 ctrl+ d터미널을 종료합니다.

이 문제는 2003 년보고되었으며 그 이후로 여러 차례 충돌했습니다.

방법이 있습니까?

  • 이 동작을 변경하거나
  • MySQL 개발자 팀에게 이것이 정말로 성가신 것이라고 설득합니까?

답변:


6

동작을 변경하려면 mysql CLI의 소스를 다운로드하고 원하는 SIGINT대로 작동하도록 핸들러를 수정 한 다음 다시 컴파일하고 설치하십시오.


1
잠재적으로 위험하지 않습니까? 향후 버전에서 작동한다는 보장은 없습니다. 게다가 그것은 효과가있는 것처럼 보이지만 나중에 완전히 관련이없는 곳에서 이상한 행동을하지 않을 것이라고 어떻게 알 수 있습니까?
Pacerier

21

클라이언트 버전 5.6.14 이상 에는 SIGINT 핸들러를 완전히 무시하는 --sigint-ignore 옵션이 있습니다. 2004 년 10 월 7 일 에 추가 된 것 같습니다. 방금 테스트했으며 CTRL-C가 MySQL 클라이언트를 취소하지 못하게합니다. 그러나 CTRL-C가 PostgreSQL CLI처럼 BASH 셸에서와 같이 현재 명령 줄 버퍼를 취소하면 좋을 것입니다. 그런 일을 구현하는 것이 얼마나 어려운지 알기 위해 MySQL을 포크했습니다. 준비가되면 / tarball 링크와 함께 Homebrew 공식을 게시합니다.

업데이트 1 그 중 하나가 있습니까? 약속 된 패치를 만든 다음 비디오를 만들어이를 보여 주기로 결정했습니다. 효과가 있었다! 그러나 비활성화 할 수 없었습니다! 글쎄, MySQL은 작년에 핵심 기능을 실제로 구현 한 것으로 밝혀졌다 ! 그러나이 Q의 A는 최소한 MySQL 5.7.3-794-g901d27f의 클라이언트를 다운로드하는 것입니다. 그것은 우리 모두가 원하는 기능을 가지고 있습니다.

명령 행에서 --sigint-ignore 플래그를 추가하십시오.

mysql --host=127.0.0.1 --port=8900 --user=root -p --sigint-ignore DBNAME

내가 한과에서 사용자 계정에 대한 MySQL의 설정 파일을 만들 같이 또는 수행 $HOME/.my.cnf( %USERPROFILE%/.my.cnf다음과 같은 내용으로 Windows의 경우) :

[mysql]
sigint-ignore=TRUE

이렇게하면 모든 mysql실행이 성가신 Ctrl-C를 무시하고 좋은 SQL 클라이언트처럼 작동합니다.


19

그동안 ctrl+의 c행동이 짜증나, 당신은 여전히 사용할 수있는 \c현재 쿼리를 취소 할 수 있습니다. mysql CLI를 사용할 때 + \c대신 사용하도록 스스로 훈련해야합니다 !ctrlc


1
이 아이디어를 만든 사람은 누구입니까? 우리는 그의 머리를 원한다.
Pacerier

1
Ctrl + U를 사용하여 줄의 시작 부분을 삭제하고 Ctrl + W를 사용하여 한 단어를 뒤로 삭제할 수도 있습니다.
Damien Ó Ceallaigh

9

좋은 소식 : MySQL의 ^ C 기능은 마침내 # 66583에 의해 수정되었습니다 .

로부터 5.7.0 변경 내역 :

이전에는 mysql의 Control + C가 현재 명령문을 중단했으며 (없는 경우) mysql을 종료했습니다. 이제 Control + C는 현재 명령문이 있으면이를 중단 시키거나 그렇지 않으면 부분 입력 라인을 취소하지만 종료하지는 않습니다.


5.6.35를 사용하고 있으며 이것이 문제가 아님을 확인했습니다.
flow2k

1

어떤 버전의 클라이언트를 사용하고 있습니까? 나는 이것이 오래된 행동임을 기억하지만 최신 버전의 5.1 및 5.5는 클라이언트를 종료하지 않고 실행중인 명령을 취소하는 것처럼 보입니다. 그런 다음 다시 Percona 빌드를 사용하고있을 수 있습니다. 이 경우 클라이언트를 실행 해 볼 수 있습니다.


흠, 나는 5.5 Percona를 실행 중이고 ctrl + c는 여전히 mysql 클라이언트를 중단시킨다 (현재 sql 명령이 아님)
Derek Downey

OP를 잘못 읽은 것 같습니다. 내 응답은 아직 실행중인 명령을 비 우려는 의도가 아니라 실행중인 명령을 처리하는 것이 었습니다.
atxdba

@atxdba와 동의합니다-Percona 빌드 5.5도 실행 중이며 ctrl + c는 현재 실행중인 명령에서 삭제됩니다. 실행중인 명령이 없으면 CLI에서 제거됩니다. ctrl + d가 실행중인 쉘에서 떨어질 수 있지만 쉘 내에서 스크립트가 실행중인 경우 ctrl + c를 누르면 중지됩니다. 다른 응용 프로그램 / 쉘 / 스크립트에 대해 다른 명령! 혼란 스러울 수 있습니다 ... : ~ s
Dave Rix

@DaveRix 동의합니다 .Ctrl + C는 현재 실행중인 쿼리에서 삭제됩니다. 그러나 그것은 불행히도 OP가 중요했던 것이 아닙니다.
데릭 다우니
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.