Congelación de la base de datos MySQL después de 'usar'


17

Recientemente cometí un error bastante estúpido y corrompí mi instalación de Ubuntu. Para resolverlo, arranqué con un CD en vivo y copié los archivos de la base de datos. Sin embargo, ahora he copiado las carpetas de la instalación anterior a la nueva, cada vez que escribo "use database_name" simplemente se congela en esto:

mysql> use my_database_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Y luego se congela sin dar el terminal.

Respuestas:


28

En el primer comando "usar" después del inicio de sesión, MySQL escanea el nombre de la base de datos, tablas y columnas para la finalización automática. Si tiene muchos db, tablas, podría tomar un tiempo.

Para evitar eso, inicie su cliente con la opción -A (o --no-auto-rehash)

mysql -uroot -p -A

También puede agregar la variable disable_auto_rehash en su my.cnf (en la sección [mysql]) si desea deshabilitarla por completo. Este cambio no requiere un reinicio (es un cliente, no un servidor, variable).


¿Puede "un tiempo" ser más de un día para una base de datos de ~ 2.5GiB, o es irracionalmente largo?
lucidbrot

2

En mi caso, la "información de la tabla de lectura" estaba tomando una cantidad de tiempo irrazonable. Cuando corrí mysql -e 'show processlist'descubrí que el proceso que estaba "colgando" era "Esperando el bloqueo de metadatos de la tabla". Esto tenía algún sentido ya que tenía una consulta de larga duración del formulario que se create table from select ...ejecutaba en otro lugar, por lo que en un nivel pude entender que hasta que se terminara de crear esa nueva tabla, los metadatos sobre las tablas no estarían disponibles. (Supongo que sería preferible si el análisis de autocompletar simplemente omitiera las tablas "incompletas" de la consulta de metadatos si fuera posible).


0

📌

Cuando copia una base de datos completa de otro sistema:

/ var / lib / mysql / *

Puede usar -R mysql: mysql / var / lib / mysql / * e iniciar el servicio nuevamente.

☝ esto resolvió mi problema 👊


2
¡Bienvenido a DBA Stack Exchange! Has formateado esto como una cita; Si realmente obtuvo esta solución de otro lugar, debe proporcionar la fuente . De lo contrario, elimine el formato.
Glorfindel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.