Як очистити невиконаний запит 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 вказав: "Я хочу мати команду на екрані, щоб я міг використовувати її як посилання".
ruahh

Працює з версії 5.5.40-0.
до

1
Не працює з 5.6.28 @Ubuntu. Окрім того, це послідовність для вбивання поточного вікна екрана.
Піохен

1
Ну, ви завжди можете встановити цю послідовність як ярлик для цього і цього. Це послідовність за замовчуванням у emacs та bash.
до

1
Звичайно, це не працює для мого найпоширенішого випадку використання: я забув крапку з комою, натиснув клавішу enter і замість того, щоб захаращувати свою історію непотрібним дворядковим вкладишем, я б скоріше переписав команду правильно.
quazgar

18

Щоб видалити поточний рядок, скористайтесь одним із наведених нижче ярликів:

  • Наберіть Ctrl+, uщоб видалити все з курсору назад до початку рядка
  • Наберіть Ctrl+, kщоб видалити все від курсору до кінця рядка

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


0

Якщо це довга команда, я зазвичай стрілку починаю до початку команди і додаю тупицю, тож вона не буде виконуватися, але я можу перевести стрілку вгору та отримати доступ без необхідності вводити її повторно. В іншому випадку, якщо ви не хочете його виконувати, просто натисніть стрілку вгору, і вона повинна прокрутити вас через історію команд. Знайдіть коротку команду, backspace, а потім введіть все, що завгодно.


0

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



0

У mysql 5.7 це вирішено. Тепер ви можете ctrl-cвийти з командного рядка SQL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.