MySQLコマンドラインクライアントでのオートコンプリート


81

Linuxや他の多くのシステムでは、ターミナルをナビゲートするときにを押しTabて、ディレクトリまたはファイル名をオートコンプリートできます。

MySQLターミナルにそのようなものがあるのだろうかと思います。例えば、私はの説明を取得したい場合は、someTableWithRidiculousLongNameIを入力することができdescribe someTableW、その後Tab、それが残りの部分を自動的に完了します。

そのようなものはMySQLターミナルに存在しますか?


2
mycli、github.com
dbcli

回答:


123

以下.my.cnfを含む、ホームディレクトリで呼び出されるファイルを編集または作成します。

[mysql]
auto-rehash

@galarantは必ずしもそうではなく、オプションである方がよい
rkmax 2014年

2
@ rkmax---disable-auto-rehashフラグを使用する場合はオプションです。しかし今、あなたはそれをデフォルトでオンにしました。
T Zengerink 2014年

3
ただし、コマンドを小文字で入力すると機能しません。
alhelal 2018年

85

MySQLプロンプト内でオートコンプリートを有効にするには、次のように入力します。

mysql> \#

その後、次のように入力できます。

mysql> describe someTableW[TAB]

取得するため:

mysql> describe someTableWithRidiculousLongName

7
なぜそれがデフォルトではないのですか?
Oussama Elgoumri 2015年

1
シンプルでエレガント
sp1rs 2016年

1
mysql> rehash -「\#」の代わりに、次のように「rehash」mysqlコマンドを入力することもできます。「再ハッシュ」として共有することは、私のような一部の人にとっては覚えやすいかもしれません。 mysql> rehash その後、オートコンプリートが機能し始めます。
janeshs 2018

1
@OussamaElgoumri複雑なクエリをコマンドラインに貼り付けるのが好きな人がいて、これらのクエリにはインデント用のタブ文字が含まれている可能性があるためです。
alexg

61

追加オプション--auto-rehashでMySQLコンソールを起動します。

mysql --auto-rehash -u root -p

7
なぜそれがうまくいかないのか分かりません!タブはタブとしてのみ解釈され、オートコンプリートには何もしません。
Praveen Puglia 2013


1
注意、tabcompleteは、Otheusがunix.stackexchange.com/questions/270309/で指摘したように、データベースに接続した後にのみ機能します
Simeon

22

これは古い質問ですが、高度なオートコンプリート機能を備えた非常に便利なMySql cliクライアント mycliを見つけました。組み込みの自動再ハッシュ機能よりもはるかにスマートです。


7
優れた代替手段!
kraxor 2017

3
そうそう、一流の答え
smac 8918

1
auto-rehash私のものでは動作しません。mycliとboomに切り替えました....プロのように機能しました。
RajeshChaudhary20年

4

OS X 10.11.6では、上記のように--auto-rehashを設定しましたが、機能しませんでした。(これはOS Xであるため、mysqlはBSD libeditライブラリでコンパイルされます。)

次に、bind -vという1行を含む〜/ .editrcを作成して、mysqlクライアントのviキーバインディングを設定したことを思い出しました。これは、mysqlクライアントでviのようなナビゲーションを提供するのに最適ですが、列名の補完が壊れていました(.editrcを削除することでこれを確認できました)。

そこで少し調べてみたところ、〜/ .editrcには少なくとも次の行が必要であることがわかりました。

bind -v
bind \\t rl_complete

この追加行により、名前の補完はmysqlで正しく機能し、viのようなナビゲーションも機能します。(mysqlクライアントのナビゲーションを大幅に改善する他の.editrc設定がありますが、これはその議論のスレッドを開始する場所ではありません。)


3

自動再ハッシュに関する注意事項:

オートコンプリートを有効にすると、mysql構成ファイルが編集されます。

[mysql]
auto-rehash

すべてのユーザーに対して、または1人のユーザーに対してのみ実行できます。

/etc/my.cnf: 全てのユーザー

~/.my.cnf:実際のユーザー

オートコンプリートの追加を無効にすることもできます。

no-auto-rehash

抽出元:http//www.sysadmit.com/2016/08/linux-mysql-autocompletar.html


1

コマンド履歴に基づいてオートコンプリートすることもできます。入力を開始してからed-search-prev-history、とにバインドされているキーを呼び出しますed-search-next-history。これは、mysqlにlibeditサポートが付属している場合に適用されます。デフォルトのキーバインドはCtrl-PとCtrl-Nですが、これは.editrcでカスタマイズできます。Ctrl-upとCtrl-downの私の例:

# start typing, then press Ctrl-Up
bind "\e[1;5A" ed-search-prev-history
# start typing, then press Ctrl-Up, then Ctrl-Down
bind "\e[1;5B" ed-search-next-history

以前は、MySQLのはreadlineのに基づいて、その後、たhistory-search-backwardhistory-search-forward正しいコマンドです。その後、構成は.inputrcを使用して行われました。上記と同じ例:

# these are the key bindings for the readline library
# start typing, then press Ctrl-Up
"\e[1;5A": history-search-backward
# start typing, then press Ctrl-Up, then Ctrl-Down
"\e[1;5B": history-search-forward

つまり、入力を開始してselCtrl-Upを呼び出すとselect * from some_long_table_name、それが以前に使用したコマンドである場合に表示されます。

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