MySQLコマンドプロンプトを終了する方法は?


37

MySQLをインストールしました。これで、MySQLコマンドプロンプトの内部で立ち往生しています。次のようにMySQLを実行しました。

C:\>mysql.exe
mysql>

次に、次のような無効なコマンドを入力します。

mysql> /version
    ->

そして、入力した内容に関係なく、MySQLコマンドライン/ターミナルを終了できません。例えば:

  • exit

  • CtrlC

  • CtrlD

  • quit

  • Ctrl\

  • CtrlZ

  • bye

MySQLターミナルを終了してデフォルトのターミナルにするにはどうすればよいですか?


1
コンピューターをシャットダウンしようとしましたか?/ s
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がこれほど馬鹿げているのですか?
アマルゴビヌス

本当の答えは、Windowsのmysql cliが台無しになり、動かなくなる可能性があるということです。Windowsで最も簡単な方法は、git bashを使用することです
アマルゴビヌス

20

Windowsでctrl-cがmysql入力モードを終了しないのはなぜですか?

終了コマンドを有効な入力として解釈するよう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
私は引用符が物事を逃れ、より多くの入力を待っていると推測しています。実際に種類作るセンスのデータベース内の「出口」のようなものかもしれません保存するときに
ジャーニーマンオタク

@Eric、引用モードではCtrl-Dは機能しませんが、mysql 5.5.43やmysql 5.1.73などの古いクライアントを使用している場合、Ctrl-Cは引き続き機能します。win 8.1でテスト済み。
Pacerier

Ctrl-cはまだ私に任せていません。「さようなら」というメッセージが表示されません。さらに、私が->モードに固執しているとき、できることはCtrl + Cだけです。インタープリターからの応答はまったくありません。Mysqlはほとんどの場合直感的ですが、これはそのような場合ではありません。
アマルゴビヌス

ターミナルエミュレータがCtrlコードをゴブリングし、テキストとして解釈するプロセスに別のキーコードを送信している可能性があります。私は2013年にこの投稿を書いたとき、あなたの痛みを感じます。これはこの問題のためであり、以前のWindowsマシンがPCを汚染するためにゴミ箱に投げ込まれ、どこかに埋め立てられていたのと同じように、他の何百万人もそうでした。これを修正する唯一の方法は、Windowsオペレーティングシステムを取り除き、Ctrl-Cが機能しないようにするために仲介者を挿入するという犯罪を犯さないMacおよびLinuxイデオロギーに移行することでした。
エリックレシンスキー

1

SQLは、複数行として入力されたクエリをサポートします。セミコロンを入力した場合にのみ;、クエリが実行されます。また、クエリ内の文字列を終了する必要があります。

ワードプロセッシングパッケージの文字列を使用したクエリのコピーと貼り付けに注意してください-引用符は「スマートクォート」に置き換えられている可能性があり、これはクエリを台無しにします。

終了していないクエリを入力した場合、実行されません。そのため、exitを入力しても機能しません。MySQLはまだクエリの途中にいると考えています。コマンドプロンプトが変わり、クエリを終了するために必要な入力が表示されます。たとえば、引用符または二重引用符が必要な場合があります。これは強力であり、コマンドプロンプトは役に立ちますが、このスレッドの回答とコメントを読むまで混乱を招きました。

こちらの仕様をご覧ください

「トップレベル」プロンプトは次のとおりです。

mysql>

これが表示された場合は、コマンドを入力して、最後に;を入力できます。Enterキーを押します。

次のようなプロンプトが表示された場合:

'>
">
->

その後、MySQLは、引用符で文字列を終了するか、セミコロンでクエリを終了するのを待っています。

混乱した未終了のクエリをキャンセルし、メインプロンプトに戻るようにMySQLに指示する方法は次のとおりです。

\c

これは、意図しないクエリを終了して実行するよりも安全だと思います。この後、>プロンプトに戻り、次のコマンドで終了できます。

exit


0

Ctrl+ Shift+ を使用してエスケープを試みることができますD


3
これは、使用している特定のターミナルエミュレータのアーティファクトであるため、どれが自分のものかを知っておくと役立ちます。あなたのものは、Ctrl-Shift-Dをmysqlプロセスが終了を意味すると解釈するキーコードに再マップしたようです。この場合、ターミナルエミュレータでキーコードを再マッピングできるので、プログラムを終了するために手根管を取得する必要はありません。
エリックレシンスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.