Подтвердить что ты не робот

Автозаполнение в клиенте командной строки MySQL

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

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

Есть ли что-нибудь подобное в терминале MySQL?

4b9b3361

Ответ 1

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

[mysql]
auto-rehash

Ответ 2

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

mysql> \#

После этого вы можете ввести:

mysql> describe someTableW[TAB]

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

mysql> describe someTableWithRidiculousLongName

Ответ 3

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

mysql --auto-rehash -u root -p

Ответ 4

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

Ответ 5

Некоторые заметки об авто-rehash:

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

[mysql]
auto-rehash

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

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

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

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

no-auto-rehash

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

Ответ 6

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

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

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

bind -v
bind \\t rl_complete

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

Ответ 7

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

Ответ 8

это работает с добавлением в файл /etc/mysql/my.cnf этого.

[mysql]
auto-rehash

Но проблема в том, что это только для столиц, например, SELECT, USE и т.д.

Возможно ли это сделать для маленьких персонажей? Например, выберите, используйте и т.д.

Благодарю.