30

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

C:\>mysql.exe
mysql>

Затем я ввожу какую-то неверную команду, например:

mysql> /version
    ->

И независимо от того, что я печатаю, я не могу выйти из командной строки / терминала MySQL. Например:

  • exit

  • Ctrl C

  • Ctrl D

  • quit

  • Ctrl \

  • Ctrl Z

  • bye

Как выйти из терминала MySQL в терминал по умолчанию?

6 ответов6

25

Чтобы добавить другой ответ, вы можете просто завершить текущий неверный запрос, используя точку с запятой:

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>

Конечно, оба варианта предполагают, что у вас нет вступительной цитаты. Если вы это сделаете, вы должны сначала закрыть его конечной цитатой.

19

Почему 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:\>

Пока вы находитесь в режиме одинарных или двойных кавычек, escape-последовательности не соблюдаются. Даже Ctrl-C и Ctrl-D игнорируются в этих режимах.

В какой из 26 вселенных Ctrl-C не останавливает программу независимо от режима? Возможно, мы никогда не узнаем. Bazinga.

1

SQL поддерживает запросы, введенные в несколько строк. Только когда вы вводите точку с запятой ; будет ли выполнен запрос. Вы также должны прекратить любые строки в вашем запросе.

Следите за тем, чтобы копировать и вставлять запросы со строками из пакета обработки текста - кавычки могли быть заменены «умными кавычками», и это испортит ваш запрос.

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

прочитайте спецификацию здесь

Приглашение «верхнего уровня»:

MySQL>

Если вы видите это, то вы можете ввести команду и завершить ее; и нажмите ввод.

Если вы видите приглашение, подобное этому:

'>
">
->

Затем MySQL ждет, когда вы завершите строку с кавычкой или запрос с точкой с запятой.

Вот как сказать MySQL отменить запутанный неопределенный запрос и вернуть вас в главное приглашение:

\c

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

exit
1

'\q' делает всю работу за меня. Использование Ubuntu Terminal.

1

Вы можете попытаться сбежать, используя Ctrl+Shift+D

0

Хорошо, это работало для меня в Ubuntu 16.04, просто введите exit; (с точкой с запятой):

mysql> exit;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .