Назад | Перейти на главную страницу

Исправить Control-C в программе командной строки mysql?

в mysql командная строка, нажатие Ctrl-C отменит программу и вернет вас в bash. В psql, для postgres, он убьет текущий запрос и не остановит программу psql. Есть ли способ получить поведение стиля psql для Ctrl-C в программе mysql? Я продолжаю нажимать Ctrl-C по привычке и необходимости снова войти в mysql.

Контроль C не убивает bash и при нажатии на него выходит из системы. Я считаю, что это хорошо. Ctrl-C означает «прекратите то, что вы делаете».

Как говорит Энди, это исправлено в более поздних версиях.

В более старых версиях нет эквивалентного сочетания клавиш.

Но вы можете предотвратить это с помощью следующего флага CLI:

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).

если ты нажмите Ctrl-C в 5.1 во время выполнения запроса, он остановит выполнение с сообщением «Выполнение запроса было прервано»

    mysql> INSERT INTO c SELECT rand()*1000, sha1(rand()) FROM c;
    Query aborted BY Ctrl+C
    ERROR 1317 (70100): Query execution was interrupted

Дальше Ctrl-C пресс убивает клиента.

Старые версии умирают ужасно, как указано в вопросе, поэтому Обновить если возможно :)

Редактировать:

Похоже, это было добавлено в 5.0.25 (и 5.1.10).

Если вы добавите \ c в конец вашей строки вместо использования Ctrl-c, вы можете убить строку, не выходя из mysql.

Краткий ответ: по состоянию на начало 2014 года в mysql нет возможности иметь описанное поведение. Видеть соответствующий отчет об ошибке и страница в dba.stackexchange, где 3 разных человека комментарий, что это все еще не исправлено в v5.5. Кроме того, насколько я могу судить, после долгого поиска в Google нет обходного пути, который стоит использовать (см. Ниже, почему --sigint-ignore не подходит). Ответ Энди был отредактирован: «Похоже, он был добавлен в 5.0.25 (и 5.1.10)». но, вероятно, он был введен в заблуждение комментарием с датой [3 мая 2006 19:04] в вышеупомянутом отчете об ошибке.

Аргумент --sigint-ignore (см. Ответ Дэна Карли) действительно помешает mysql отбросить вас обратно в оболочку, когда вы нажмете ctrl-C, но также убрать возможность останавливать длительные запросы.

Это тот вид ошибок юзабилити, который заставляет вас пойти :-( Действительно очевидны и, вероятно, чрезвычайно легко исправить, но все же здесь, спустя много лет.