Как удалить невыполненный запрос 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.

Bladerz
источник
0

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

Майк Перселл
источник
0

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

atxdba
источник
0

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

Post Impatica
источник
0

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

dkniffin
источник