Як вийти з командного рядка MySQL?


37

Я встановив MySQL. Тепер я застряг у командному рядку MySQL. Я запустив MySQL так:

C:\>mysql.exe
mysql>

Тоді я набираю таку недійсну команду, як ця:

mysql> /version
    ->

І незалежно від того, що я ввожу, я не можу вийти з командного рядка / терміналу MySQL. Наприклад:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

Як вийти з терміналу MySQL до терміналу за замовчуванням?


1
Ви намагалися вимкнути комп’ютер? / с
VarunAgw

Відповіді:


29

Щоб додати іншу відповідь, ви можете просто закінчити поточний недійсний запит, використовуючи крапку з комою:

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

Або за допомогою \G(що повинно робити рядки відображатися вертикально):

mysql> /version
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax.........
mysql> exit
Bye

c:\mysql\bin>

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


Що мене спонукало, це те, що я не повністю зрозумів, як термінал mysql ставиться до вводу в різних режимах котирування, визначених тут: dev.mysql.com/doc/refman/5.0/en/entering-queries.html Є 5 режимів : ->, '>, ">, `>, і /*> я перевірив його знову на останніх версіях, і вона працювала правильно. Так це схоже на виправлену помилку.
Ерік Лещинський

Точка з комою не працює ... нічого не робить. Якщо я роблю \ G, він діє так, ніби він вийшов з цього дурного -> режиму, але потім повертається до нього після іншої команди. Чому mysql настільки німий з цього приводу?
Амальговінус

Справжня відповідь полягає в тому, що mysql кліп Windows накручений і може застрягнути. Найпростіший спосіб для Windows - це просто використовувати git bash
Amalgovinus

20

Чому ctrl-c не виходить з режиму введення mysql в Windows?

Тому що ви сказали MySQL інтерпретувати команди виходу як дійсні вхідні дані.

Що робить термінал MySQL важко зрозуміти, чи існують різні режими для однієї цитати, подвійної цитати та звичайного режиму.

Отже, щоб вийти з режиму введення mysql, вам доведеться виконати наступні дії:

  1. Вийдіть з режиму подвійної цитати.
  2. Вийдіть з режиму одинарної цитати.
  3. Вийдіть з режиму mysql.
  4. Вийдіть з mysql назад до терміналу за замовчуванням.

Найбільш базовий приклад:

mysql> /version
    ->
    ->
    ->
    -> \c
mysql> exit
Bye

C:\>

Ви ніколи не виходили з режиму за замовчуванням у наведеному вище прикладі, тому команди виходу працюють правильно.

Приклад 2 (це те, що вас спонукає).

mysql> hello
    ->
    -> look dash is on the left"
    "> In doublequote mode now, because doublequote above
    "> adding another doublequote breaks you out: "
    -> look a single quote ' here
    '> in single quote mode now.
    '> get out, in, then out again with three singlequotes: '''
    -> now it will listen to your escape code: \c
mysql> exit
Bye

C:\>

Поки ви перебуваєте в режимі одинарної цитати або режимі подвійної цитати, жодні послідовності виходу не дотримуються. Навіть Ctrl-Cі Ctrl-Dв цих режимах ігноруються.

У якому з 26 всесвітів Ctrl-C не зупиняє програму незалежно від режиму? Ми може ніколи не дізнаємось. Базінга.


1
Я здогадуюсь, котирування уникнути речей, і його чекають більше вкладу. Це насправді має сенс, коли ви можете зберігати щось схоже на "вихід" всередині бази даних
Journeyman Geek

@Eric, Хоча Ctrl-D не працює, коли ви перебуваєте в режимі котирування, Ctrl-C все ще працює, якщо ви використовуєте старіші клієнти, такі як mysql 5.5.43 та mysql 5.1.73. Перевірено на виграш 8.1.
Pacerier

Ctrl-c все ще не залишає цього для мене. Я ніколи не отримую повідомлення "до побачення". Крім того, коли я перебуваю в -> режимі, єдине, що я можу зробити - це Ctrl + C вийти? Абсолютно нічого іншого не отримує відповіді від перекладача. Mysql у більшості випадків інтуїтивно зрозумілий, але це не один такий випадок.
Амальговінус

Можливо, ваш термінальний емулятор погризе ваші Ctrl-коди та надсилає інший код коду до процесу, який він інтерпретує як текст. Я відчуваю твій біль. Ще коли я писав цю публікацію ще у 2013 році, саме через цю проблему та мільйон інших, як це було, коли мою колишню машину Windows загнали та занесли до сміття за забруднення мого ПК, вона сидить на сміттєзвалищі десь . Єдиний спосіб, який я вирішив це виправити, - це позбутися операційної системи Windows і перейти до Mac і Linux ідеологій, які не вчиняють цих злочинів вставки посередників, щоб запобігти роботі вашого Ctrl-C.
Ерік Лещинський

1

SQL підтримує запити, введені у вигляді декількох рядків. Тільки коли ви введете напівкрапку ;, запит буде виконаний. Вам також потрібно припинити будь-які рядки у вашому запиті.

Слідкуйте за тим, щоб скопіювати та вставити запити з рядками з пакету текстової обробки - цитати, можливо, було замінено на "розумні цитати", і це зіпсує ваш запит.

Якщо ви ввели незавершений запит, він не запускається, і тому введення виходу не працює - MySQL вважає, що ви все ще в середині запиту. Командний рядок змінюється, щоб показати, який вхід необхідний для завершення запиту. Наприклад, може знадобитися цитата або подвійна цитата. Це є потужним і командний рядок є корисним, але я вважав це заплутаним, поки не прочитав відповіді та коментарі з цієї теми.

прочитайте специфікацію тут

Підказка "верхнього рівня":

mysql>

Якщо ви бачите це, то ви можете ввести команду, закінчити її; і натисніть клавішу Enter.

Якщо ви бачите такий рядок:

'>
">
->

Тоді MySQL чекає, коли ви закінчите рядок із цитатою або запитом з комою.

Ось, як сказати MySQL, щоб скасувати незавершений запит і повернути вас до основного підказки:

\c

Я думаю, що це безпечніше, ніж припиняти та запускати ваш ненавмисний запит. Після цього вам слід повернутися до підказки> і можете вийти за допомогою:

exit


0

Ви можете спробувати втекти, використовуючи Ctrl+ Shift+D


3
Це артефакт конкретного емулятора терміналу, який ви використовуєте, тому було б корисно дізнатися, який з них ваш. Ваш, очевидно, перевстановив Ctrl-Shift-D на код коду, який mysql інтерпретує як означає вихід. Якщо це так, ви повинні мати можливість перевпорядкувати ключові коди в емуляторі терміналу, щоб вам не довелося отримувати тунельний тунель, щоб вийти з програми.
Ерік Лещинський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.