Es posible que se encuentre con el error de MySQL ‘Incorrect Key File for Table’ al ejecutar una consulta MySQL de gran tamaño. Por ejemplo, algunos usuarios han informado de que reciben el error al ejecutar una consulta para obtener miles de registros de una tabla utilizando más de un JOIN.
¿Por qué MySQL devuelve el error ‘Incorrect Key File for Table’ al ejecutar una consulta?
El mensaje de error completo de MySQL “Archivo de clave incorrecto para la tabla ‘FILEPATH.MYI’; intente repararlo” sugiere que puede intentar reparar la clave. Mirar tu tabla FILEPATH puede ayudarte a encontrar más detalles sobre el error:
- Si el FILEPATH tiene un aspecto similar a ‘/tmp/#sql_xxxx.MYI‘, significa que su consulta está devolviendo un conjunto de resultados grande. La carpeta /tmp utilizada para almacenar una tabla temporal que contiene el conjunto de resultados más grande es demasiado pequeña para el tamaño de la consulta. Básicamente, no hay espacio suficiente en la carpeta /tmp para la tabla temporal.
- Si su FILEPATH contiene el nombre de la tabla de la base de datos, es probable que su tabla esté corrupta.
Posibles causas del error MySQL ‘Archivo de claves incorrecto para tabla’ y sus soluciones
Es posible que el error se deba a un problema de espacio en disco o a la corrupción de una tabla MySQL. Siga leyendo para saber cómo puede resolver estos dos problemas.
Causa 1 – Espacio insuficiente en la carpeta temporal (/Tmp)
Nota: No obtendrá el error al ejecutar consultas individuales, pero puede encontrar el error al ejecutar consultas grandes simultáneamente en el mismo Servidor MySQL. |
La razón principal por la que se produce el error ‘Incorrect key file’ de MySQL es que su consulta está obteniendo datos mayores que el tamaño de su carpeta /tmp (es decir, la carpeta utilizada para almacenar tablas temporales).
Solución – Cambiar la ubicación de la carpeta ‘/temp
En primer lugar, debes determinar si la partición del disco está llena mirando el tamaño de la carpeta /tmp. Ejecute el comando df con la opción ‘-h’ para comprobar el uso del disco del sistema de archivos de forma legible:
df -h
Si la partición está llena, cambie la ubicación de la carpeta /tmp a un disco con amplio espacio libre. Cambie la ubicación del archivo en el archivo de configuración de MySQL (.cnf).
A veces, la carpeta /tmp es lo suficientemente grande, pero aún así puede llenarse. En ese caso, tendrás que limpiar algo de espacio en la carpeta manualmente.
Causa 2 – Claves o tabla dañadas
La corrupción de la tabla es otra razón que puede provocar el error “Archivo de claves incorrecto para la tabla”.
Solución – Volver a crear o reparar la tabla dañada
Para resolver el problema, elimine o vuelva a crear la tabla dañada y, a continuación, vuelva a insertar los datos.
Por ejemplo, en la siguiente consulta se utiliza la operación ‘DELETE’ para eliminar la tabla, y después se utiliza el comando ‘OPTIMIZE’ TABLE para liberar espacio en disco.
mysql> DELETE tbl_name WHERE id < 200000;
mysql> OPTIMIZE TABLE tbl_name;
Si no puede volver a insertar los datos, intente reparar la tabla. En el caso de las tablas MyISAM, puedes utilizar el comando ‘REPAIR table’ para solucionar la corrupción:
REPAIR TABLE tbl_name USE_FRM;
Este comando sólo funcionará en tablas MyISAM. Para reparar tablas con el motor de base de datos InnoDB, consulte las mejores formas de reparar la corrupción de tablas InnoDB en MySQL. Pero, ejecutar un comando de reparación para cada una de las tablas de la consulta puede ser un proceso largo y lento.
¿Qué más se puede hacer para reparar tablas dañadas?
Utilice el software Stellar Repair for MySQL para reparar tablas dañadas. El software ayuda a reparar la base de datos MySQL y todos sus objetos rápidamente en unos pocos clics. Recupera todos los datos de la base de datos dañada sin pérdida de datos.
Conclusión
Cuando se encuentra con el error de MySQL ‘Incorrect Key File for Table’, lo primero que debe hacer es comprobar la ubicación de la carpeta /tmp para asegurarse de que tiene suficiente espacio en disco para almacenar tablas temporales. Si no es así, cambie la ubicación de la carpeta a un disco que tenga suficiente espacio libre. Si no hay ningún problema con el espacio en disco, lo más probable es que la tabla de la base de datos esté dañada y necesite ser reparada. Si no puede reparar la tabla manualmente, puede utilizar el software de MySQL database repair.
Was this article helpful?