2012-01-12 12 views
96

Estaba reparando esta tabla de repente el servidor se colgó y cuando volví todas las tablas están bien, pero esta muestra 'en uso' y cuando intento repararlo no lo hago no procedasLa tabla de mysql está marcada como bloqueada y la última (¿automática?) Reparación falló

ERROR 144 - Table './extas_d47727/xzclf_ads' is marked as crashed and last (automatic?) repair failed 

¿Qué puedo hacer para repararlo?

+0

He visto esto sobre todo cuando el sistema de archivos subyacente se queda sin inodos libres. Consulte con df -hi. Por lo general, algo lo llena de montones de archivos pequeños, como p. Ej. Archivos de sesión php que no se limpian. – Zrin

Respuesta

189

Si su proceso MySQL se está ejecutando, deténgalo. En Debian:

sudo service mysql stop 

Vaya a su carpeta de datos. En Debian:

cd /var/lib/mysql/$DATABASE_NAME 

intente ejecutar:

myisamchk -r $TABLE_NAME 

Si eso no funciona, puede intentar:

myisamchk -r -v -f $TABLE_NAME 

puede iniciar su servidor MySQL de nuevo. En Debian:

sudo service mysql start 
+1

Intenté el comando anterior Obtengo este error No se puede crear un nuevo archivo de temp: 'xzclf_ads.TMD' – GoodtheBesT

+1

Por favor, intente con esas otras opciones de mi respuesta actualizada. –

+0

Gracias, lo intenté, pareció funcionar, ¿pero dejé de dar este error? "myisamchk: El disco está lleno '/ tmp/STp7Q4qR' (Errcode: 28). Esperando a que alguien libere espacio ... (Espere hasta 60 segundos de retraso para que el servidor continúe después de liberar espacio en el disco) myisamchk: vuelva a intentar en 60 segundos Mensaje reimpreso en 600 segundos " – GoodtheBesT

12

Si se le da la negación permiso mientras se mueve a/var/lib/mysql a continuación, utilizar la siguiente solución

$ cd /var/lib/ 
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME> 
80

Intente ejecutar la siguiente consulta:

repair table <table_name>; 

Tuve el mismo problema y me solucionó el problema.

+4

Solución simple y perfecta :) –

+1

solución perfecta resolvió mi problema ... – SINGH

+3

life saver! La forma más fácil de resolverlo +1 – JohnA10

3

Vaya a data_dir y elimine el archivo Your_table.TMP después de reparar la tabla <Your_table>.

+0

¿Dónde está 'data_dir'? – CMCDragonkai

+0

búsquelo con este comando 'grep -r datadir/etc/mysql /'. Debería ser '/ var/lib/mysql' bajo debian y ubuntu. – ThorstenS

3

Recibí myisamchk: error: myisam_sort_buffer_size is too small como error.

La solución

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G 
1

que necesitaba para agregar USE_FRM a la declaración de reparación para hacer que funcione.

REPAIR TABLE <table_name> USE_FRM; 
Cuestiones relacionadas