En Linux, y muchos otros sistemas, cuando navega por la terminal puede presionar Tabpara completar automáticamente un directorio o nombre de archivo.
Me pregunto si hay algo así en la terminal MySQL. Por ejemplo, si quiero obtener la descripción de someTableWithRidiculousLongName
, podría escribir describe someTableW
entonces Taby autocompletaría el resto.
¿Existe algo así en la terminal MySQL?
mysql
autocomplete
console
Alan B. Dee
fuente
fuente
Respuestas:
Edite o cree un archivo llamado
.my.cnf
en su directorio de inicio, que contenga:fuente
--disable-auto-rehash
bandera. Pero ahora lo ha activado de forma predeterminada.Para habilitar el autocompletado dentro del indicador de MySQL, escriba:
mysql> \#
Después de eso, puede escribir:
mysql> describe someTableW[TAB]
Llegar:
mysql> describe someTableWithRidiculousLongName
fuente
mysql> rehash
- Como alternativa a "\ #", también podemos escribir el comando mysql "rehash" de la siguiente manera. Pensar en compartir como "refrito" puede ser más fácil de recordar para algunas personas como yo: ¡mysql> rehash
Después de eso, el autocompletado comenzará a funcionar!Inicie la consola MySQL con una opción adicional
--auto-rehash
, es decirmysql --auto-rehash -u root -p
fuente
Sé que esta es una pregunta antigua, pero he encontrado un cliente cli MySql muy útil con autocompletado avanzado: mycli . Es mucho más inteligente que la función de repetición automática incorporada.
fuente
auto-rehash
no funciona en el mío. Cambié a mycli y boom ... funcionó como un profesional.En OS X 10.11.6 configuré --auto-rehash como se describió anteriormente, pero no funcionó. (Este es OS X, por lo que mysql está compilado con la biblioteca libedit de BSD ).
Luego recordé que había establecido combinaciones de teclas vi para el cliente mysql creando ~ / .editrc, que contiene una línea: bind -v . Esto funciona muy bien para brindarme una navegación similar a vi en el cliente mysql, pero rompió la finalización del nombre de la columna (pude verificar esto eliminando .editrc ).
Así que investigué un poco y descubrí que ~ / .editrc debería tener al menos las siguientes líneas:
Con esta línea adicional, la finalización de nombres funciona correctamente en mysql Y la navegación similar a vi también funciona. (Hay otras configuraciones .editrc que mejoran en gran medida la navegación del cliente mysql, pero este no es el lugar para comenzar ese hilo de discusión).
fuente
Algunas notas sobre el refrito automático:
Cuando habilita el autocompletado editando el archivo de configuración de mysql ..
Puede hacerlo para todos los usuarios o solo para un usuario:
/etc/my.cnf
: Todos los usuarios~/.my.cnf
: Usuario realTambién puede deshabilitar el autocompletado agregando:
Extraído de: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html
fuente
También puede completar automáticamente según el historial de comandos. Empiece a escribir, luego invoque las claves vinculadas a
ed-search-prev-history
yed-search-next-history
. Esto se aplica si mysql viene con soporte libedit. Las combinaciones de teclas predeterminadas son Ctrl-P y Ctrl-N, pero esto se puede personalizar en .editrc. Mi ejemplo para Ctrl-up y 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
Anteriormente, mysql se basaba en readline, y luego
history-search-backward
yhistory-search-forward
son los comandos correctos. La configuración entonces fue mediante .inputrc. Mismo ejemplo que el anterior:# 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
Entonces, digamos que comenzó a escribir
sel
e invocó Ctrl-Up,select * from some_long_table_name
aparecería si ese es un comando que he usado anteriormente.fuente