Автозаполнение в клиенте командной строки MySQL - PullRequest
72 голосов
/ 01 декабря 2011

В Linux и многих других системах при навигации по терминалу вы можете нажать Tab для автоматического заполнения каталога или имени файла.

Мне интересно, есть ли что-нибудь подобноев терминале MySQL.Например, если я хочу получить описание someTableWithRidiculousLongName, я мог бы набрать describe someTableW, а затем Tab , а остальное было бы автоматически завершено.MySQL терминал?

Ответы [ 7 ]

123 голосов
/ 16 марта 2012

Отредактируйте или создайте файл с именем .my.cnf в вашем домашнем каталоге, содержащий:

[mysql]
auto-rehash
78 голосов
/ 27 октября 2012

Чтобы включить автозаполнение в приглашении MySQL, введите:

mysql> \#

После этого вы можете набрать:

mysql> describe someTableW[TAB]

Чтобы получить:

mysql> describe someTableWithRidiculousLongName
58 голосов
/ 01 декабря 2011

запустить консоль MySQL с дополнительной опцией --auto-rehash, т.е.

mysql --auto-rehash -u root -p
13 голосов
/ 26 февраля 2017

Я знаю, что это старый вопрос, но я нашел очень полезный клиент MySql cli с расширенным автозаполнением: mycli . Это намного умнее, чем встроенная функция автоматической перепрошивки.

2 голосов
/ 14 февраля 2017

В OS X 10.11.6 я установил --auto-rehash, как описано выше, но он не работал. (Это OS X, поэтому mysql скомпилирован с библиотекой BSD libedit .)

Затем я вспомнил, что установил привязки клавиш vi для клиента mysql, создав ~ / .editrc, содержащий одну строку: bind -v . Это прекрасно работает для того, чтобы дать мне vi-подобную навигацию в клиенте mysql, но это сломало завершение имени столбца (я смог проверить это, удалив .editrc ).

Итак, я немного исследовал и обнаружил, что ~ / .editrc должен иметь по крайней мере следующие строки:

bind -v
bind \\t rl_complete

С помощью этой дополнительной строки, завершение имени работает правильно в mysql И vi-подобная навигация работает также. (Существуют и другие настройки .editrc, которые значительно улучшают навигацию по клиенту mysql, но это не то место, где можно начинать обсуждение).

2 голосов
/ 24 августа 2016

Некоторые примечания об автоматической перефразировке:

Когда вы включаете автозаполнение, редактируя конфигурационный файл mysql ..

[mysql]
auto-rehash

Вы можете сделать это для всех пользователей или только для одного пользователя:

/etc/my.cnf: все пользователи

~/.my.cnf: фактический пользователь

Вы также можете отключить добавление автозаполнения:

no-auto-rehash

Извлечено из: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html

1 голос
/ 17 июня 2016

Вы также можете выполнить автозаполнение на основе истории команд.Начните печатать, затем вызовите ключи, которые связаны с 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-backward и history-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

Итак, предположим, что вы начали вводить sel и вызывали Ctrl-Up, select * from some_long_table_name появится, если это команда, которую я использовал ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...