2009-06-22 13 views
5
Incorrect key file for table 'widgets'; try to repair it 

Este es el mensaje de error que MySQL me da al intentar aplicar un nuevo índice a una tabla existente (muy grande). Por supuesto, cuando sigo la sugerencia del mensaje de error de tratar de repararlo:¿Cómo se recupera de un "archivo de clave incorrecta" con MySQL (InnoDB)?

mysql> repair table widgets; 
+-------------------+--------+----------+---------------------------------------------------------+ 
| Table    | Op  | Msg_type | Msg_text            | 
+-------------------+--------+----------+---------------------------------------------------------+ 
| tedsdb.widgets | repair | note  | The storage engine for the table doesn't support repair | 
+-------------------+--------+----------+---------------------------------------------------------+ 
1 row in set (0.00 sec) 

¿Cuál es mi mejor curso de acción aquí (después de la copia de seguridad completa antes de retoques obvio)?

ACTUALIZACIÓN: he creado una nueva tabla (MyISAM) del mismo esquema, copiado todos los registros (insertar en select), la cambió el motor de la nueva tabla (InnoDB), renombró la tabla corrupta y renombró la nueva tabla, luego intenté nuevamente y obtuve el mismo error.

Respuesta

10

parece una vieja pregunta, pero me acabo de encontrar con este problema. MySQL estaba escribiendo una tabla temporal en el disco y la partición/tmp se llenó.

+0

la carpeta tmp tiene un límite generalmente de 2 GB, pruebe df -h para verlo –

+0

Lo mismo para mí ... algunos volcados de copia de seguridad fallidos llenaron el espacio/tmp. Buen recordatorio de esta respuesta – smile2day

+0

Puede ser la solución para muchos, pero no funcionó para mí. (Nuestro/tmp solo tiene un 3% de uso) – rinogo

0

Recomiendo hacer una copia de seguridad antes de intentar este.

Realizar un maniquí

ALTER TABLE widgets; 
+0

Gracias. Desafortunadamente eso no funcionó. –

0

Cuando estamos haciendo Alter on innodb el "tmpdir" debe ser observado. El error 1034: la reparación de la clave es definitivamente debido a "tmpdir" lleno, y su alterar lanzará este error.

Así que sugiero que cuando se active el Alter, eche un vistazo a su utilización de "tmpdir". Si tmp está usando 100% allí, puede ver este error con certeza :).

Cuestiones relacionadas