mysqlコマンドラインプログラムのControl-Cを修正しますか?


10

ではmysql、コマンドライン、押しはControl-Cプログラムを中止し、バックのbashにあなたをもたらすでしょう。でpsql、Postgresのための一つは、それが現在のクエリを殺すだろうとpsqlプログラムを停止することはありません。Control-Cmysqlプログラムでpsqlスタイルの動作を取得する方法はありますか?私は自分のControl-C習慣に迫られ、mysqlに再度ログインしなければならないことに気づきます。

Control Cbashは強制終了せず、押すとログアウトします。これは良いことだと思います。Control-C「あなたがやっていることをやめる」という意味です。

回答:


7

クエリの実行中に5.1でCtrl-C押すと、「クエリの実行が中断されました」というメッセージが表示されて実行が停止します

    mysql> INSERT INTO c SELECT rand()* 1000、sha1(rand())FROM c;
    クエリはCtrl + Cによって中止されました
    エラー1317(70100):クエリの実行が中断されました

さらにCtrl-C押すとクライアントが殺されます。

問題のあるように古いバージョンはひどく死ぬので、可能であればアップグレードしてください:)

編集:

5.0.25(および5.1.10)で追加されたようです。


2
それはまだかなり愚かな行動をしています。クエリ中にCTRL + Cを押すと、クエリがキャンセルされます。プロンプトでCTRL + Cを押すと、何もせず、MySQLを終了しません。何も起こらないときにBashプロンプトでCTRL + Cを押すと、新しい行が出力されますが、基本的には何も実行されません。
ニール

実際に私がしたいのは、psqlが行うこととまったく同じです。クエリを入力する途中で、すでに複数の行を入力している可能性があり、間違いを犯したために入力を中止したい場合は、Ctrlキーを押しながらCはプロンプトに戻ります。
有害な2014年

私はそれを明確にするよ:CTRL-Cはまだでも、バージョン5.5でのMySQL CLIのあなたをドロップアウトします。Andyの答えは(少なくとも私には)少しあいまいですが、新しいバージョンでこの動作が修正されたと感じた場合は、誤解されています。
ndemou

@ndemouどのプラットフォームにいますか?私の答えはRHEL5でテストされました。
アンディ

@Andyはubuntu 12.04でテストされています。「5.0.25で追加されたようです」と書いています。何が追加されたと思いますか?それはあなたの答えの中でidonが理解できない部分です。以下の私の回答も参照してください。
ndemou 2014

13

アンディが言うように、それはそれ以降のバージョンで修正されています。

古いバージョンには、同等のキーボードショートカットはありません。

ただし、次のCLIフラグを使用すると、この問題が発生しないようにすることができます。

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).

問題は--sigint-ignoreは長時間実行されているクエリを停止する機能も削除することです。ああ!質問に関連するものは、後のバージョン(<= 5.5)AFAICTで修正されていません。以下の私の答えを参照してください。
ndemou

5

Ctrl-cを使用する代わりに\ cを行の最後に追加すると、mysqlを終了せずに行を強制終了できます。


3

短い答え:2014年の初めの時点では、mysqlで説明されている動作を行う方法はありません。関連するバグレポートと、dba.stackexchangeのページを参照してください。3人のユーザーがv5.5 ではまだ修正されていないとコメントしています。また、長い間ググリングした後でわかる限り、使用する価値のある回避策はありません(以下の--sigint-ignoreが適切でない理由を参照してください)。Andyの回答が編集され、「5.0.25(および5.1.10)で追加されたようです。」しかし、彼はおそらく前述のバグ報告の日付[2006年5月3日19:04]のコメントに惑わされました。

--sigint-ignore引数(Dan Carleyの回答を参照)は、ctrl-Cを押したときにmysqlがシェルに戻るのを実際に停止しますが、長時間実行されているクエリを停止する機能削除します。

これは、ユーザーを使いやすくする一種の使いやすさのバグです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.