Как удалить невыполненный запрос MySQL из командной строки?


88

Предположим, вы вводите запрос командной строки в базу данных MySQL, и вам нужно отменить и начать заново. Из оболочки bash вы можете просто набрать ctrl-c и получить новое приглашение. В MySQL ctrl-c выйдет из клиента и вернет вас в оболочку.

Например, у меня есть длинный и сложный оператор SELECT, но я еще не нажал «return». Я понимаю, что не хочу отправлять команду, но хочу, чтобы она отображалась на экране, чтобы использовать ее в качестве справки. Я бы хотел выручить, не выходя из MySQL. Любые идеи?

Ключевой момент: команда еще не выполнена .


10
В качестве справки в mysql 5.7 это было решено. Теперь вы можете использовать Ctrl-C, чтобы сделать именно это.
dkniffin

Стек LAMP настолько старый и имеет такое широкое распространение. Меня сбивает с толку тот факт, что им требуется столько времени, чтобы исправить то, с чем люди сталкивались бы изо дня в день.
ahnbizcad

@dkniffin: Я знаю, что это старый вопрос, но он по-прежнему занимает первое место в поиске. Не могли бы вы добавить свой комментарий в качестве ответа (это уже ответ), чтобы помочь продолжающемуся трафику?
шляпа

@hat хорошо, я добавил это в качестве ответа
dkniffin

Ответы:


114

Тип \c.

Когда вы запустите MySQL, вы, вероятно, увидите это сообщение:

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

"Буфер", на который он ссылается, является буфером команд / запросов.


7
Небольшой замечание: вы должны сделать это перед любой точкой с запятой.
wulftone

Приятно то, что на самом деле это не очищает ; все напечатанное остается видимым. (Честно говоря, я бы не догадался об этом из сообщения, поэтому я никогда не пробовал.)
Майкл Шепер,

43

Сначала введите Ctrl+ a, затем Ctrl+ k.


4
Но OP указал: «Я хочу, чтобы команда отображалась на экране, чтобы использовать ее в качестве справочника».
ruakh

Работает с версии 5.5.40-0.
до

1
Не работает с 5.6.28 @Ubuntu. Кроме того, это последовательность, чтобы убить текущее окно экрана.
Piohen

1
Что ж, вы всегда можете установить эту последовательность как ярлык для того или иного. Это последовательность по умолчанию в emacs и bash.
до

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

18

Используйте один из следующих ярлыков для удаления текущей строки:

  • Введите Ctrl+, uчтобы удалить все от курсора до начала строки
  • Введите Ctrl+, kчтобы удалить все от курсора до конца строки.

В противном случае, как уже указывалось, введите \cв конце текущей строки (ярлык для clearкоманды) и затем нажмите Enter.


0

Если это длинная команда, я обычно перехожу к ее началу и добавляю тарабарщину, чтобы она не выполнялась, но я могу использовать стрелку вверх и получить доступ, не набирая ее повторно. В противном случае, если вы не хотите выполнять его, просто нажмите стрелку вверх, и он должен прокрутить вас через историю команд. Найдите короткую команду, нажмите клавишу Backspace и введите все, что хотите.


0

Зависит от привязки клавиш вашей оболочки. Вы можете нажать домой или любую последовательность клавиш, которую вы используете, чтобы вернуться к началу, префикс вашего запроса с помощью X или что-то еще, чтобы сделать его синтаксически недействительным, нажмите Enter, и все в порядке


0

Если вы пришли сюда в надежде найти тот же ответ в Transact-SQL, введите RESET


0

В mysql 5.7 это было решено. Теперь вы ctrl-cможете выйти из командной строки SQL.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.