
En MySQL Server 5.5 y versiones anteriores, MyISAM es el motor de almacenamiento predeterminado. Por lo tanto, no es necesario especificar el motor al crear una tabla, a diferencia de MySQL 8.4, donde el motor predeterminado es InnoDB. Al crear una tabla MyISAM, el motor creará dos archivos, llamados archivos de datos y archivos de índice. Por lo tanto, cada tabla MyISAM tiene dos archivos de disco: tbl_name.MYD y tbl_name.MYI.
Estas tablas admiten índices de árbol B, tablas comprimidas, índices hash y muchas otras funciones. Sin embargo, no admiten transacciones ni restricciones de clave externa y no tienen recuperación ante fallos incorporada. Estas limitaciones hacen que las tablas MyISAM sean más susceptibles a inconsistencias y corrupción. Si las tablas MyISAM están dañadas, puede encontrar varios errores relacionados con la corrupción al intentar acceder a ellas. En este artículo, analizaremos las causas de la corrupción de la tabla MyISAM y las soluciones para solucionarlas.
Causas de la corrupción de la tabla MyISAM en MySQL
La corrupción en las tablas MyISAM puede ocurrir debido a las siguientes razones:
- Copie los archivos .MYD y .MYI mientras la tabla ya esté en uso.
- La aplicación MySQL falla cuando procesa una tabla.
- Varias instancias de MySQL Server comparten el mismo directorio de base de datos.
- Puede intentar myisamchk una tabla MyISAM mientras está en uso.
- Error en el código MySQL o MyISAM.
- No hay suficiente espacio de almacenamiento en el disco.
- Fallo de hardware.
Compruebe si la tabla MyISAM está dañada
Si encuentra el siguiente error al acceder a una tabla MyISAM, indica corrupción.
- La tabla está marcada como corrupta y necesita ser reparada.
- Archivo tbl_name.MYI no encontrado (código de error: nnn)
- El archivo finalizó inesperadamente
- El archivo de grabación está dañado
- Error recibido nnn del identificador de la tabla
Para confirmar la corrupción, puede ejecutar VERIFICAR TABLA el nombre de tu tabla;Orden. Este comando puede ayudarle a comprobar si hay algún problema con las tablas de la base de datos MySQL. Si la tabla está limpia, devuelve OK; de lo contrario, devuelve un error y se deben seguir los pasos inversos para solucionarlo.
Incluso puede verificar sus tablas MyISAM en busca de errores y problemas usando el comando myisamchk. Pero debes detener el servidor MySQL antes de ejecutar este comando. Para verificar todas las tablas en el directorio de la base de datos, puede ejecutar el siguiente comando:
myisamchk *.MYI
Para aumentar el nivel de verificación de este comando, use los parámetros que contiene. Esto le ayuda a especificar fácilmente las tareas según sus requisitos. Por ejemplo, puede utilizar el parámetro «e» para realizar una verificación de aumento.
Solución para reparar la corrupción de la tabla MyISAM
Si tiene un archivo de copia de seguridad (volcado) legible, puede restaurarlo usando el siguiente comando La utilidad mysqldump restaura tablas MyISAM. Para utilizar esta herramienta de código abierto, utilice la declaración SHOW GRANTS para verificar que se hayan otorgado todos los permisos y roles a su cuenta. Se requieren permisos CREATE, ALTER, RELOAD, FLUSH TABLE y SELECT para restaurar archivos de volcado. A continuación, siga estos pasos para restaurar el archivo de volcado usando la utilidad mysqldump:
Primero, elimine y vuelva a crear la base de datos MySQL usando los siguientes comandos:
mysql > drop db_namemysql > create db_name
A continuación, restaure la base de datos utilizando la siguiente declaración:
mysql -u root -p db_name < dump.sql
Si el archivo de volcado no está disponible, siga los métodos siguientes para reparar y restaurar la tabla MyISAM en MySQL.
1 – Usa el comando myisamchk
Puede utilizar el comando myisamchk para reparar o restaurar tablas MyISAM en el servidor MySQL. Si la tabla no contiene claves únicas, puede ejecutar el comando myisamchk para reparar la tabla MyISAM. Los pasos son los siguientes:
- Primero, detenga el servidor MySQL.
- A continuación, ejecute el siguiente comando:
myisamchk –recover TABLE
- Ahora, reinicie el servidor MySQL.
Limitaciones de este comando:
- Es posible que no garantice la recuperación completa de los datos, ya que a veces elimina filas dañadas durante la reparación.
- Es necesario detener el servidor MySQL durante la reparación. Si intenta ejecutar este comando mientras el servidor está en ejecución, puede aumentar la corrupción de datos.
- Requiere mucho espacio en el disco del sistema donde se encuentra el servidor MySQL. Asegúrese de que el espacio sea el doble del tamaño del archivo de datos.
2 – Arreglar comando de tabla
El comando REPAIR TABLE puede reconstruir índices, tablas y reparar errores menores en las tablas MyISAM. Sin embargo, este comando puede provocar la pérdida de datos. A veces, su servidor se cerrará repentinamente mientras ejecuta un comando de reparación. En este caso, debe volver a ejecutar el comando REPARAR.
A continuación se explica cómo utilizar esta directiva:
REPAIR TABLE table name;
3 – Pruebe una herramienta confiable de reparación de MySQL
Si su archivo de base de datos MySQL es demasiado grande y está gravemente dañado o dañado, entonces herramienta de reparación MySQL puede ayudarte. Stellar Repair para MySQL es una herramienta profesional que puede reparar tablas MyISAM e InnoDB en menos tiempo sin perder datos. Se requiere una pequeña cantidad de espacio en su sistema para descargar e instalar el software. Incluso puede ayudarle a recuperar completamente índices, claves primarias y otros elementos de tablas MyISAM corruptas.
nota final
Puede reparar y recuperar tablas MyISAM dañadas siguiendo los métodos discutidos anteriormente. Puede restaurar el archivo de volcado o usar el comando REPAIR TABLE o el comando myisamchk para restaurar tablas en MySQL. Pero todos estos métodos tienen algunas limitaciones. Para superar las limitaciones de estos métodos de reparación, puede utilizar herramientas profesionales de reparación de MySQL como Stellar Repair para MySQL. Le ayuda a recuperar tablas MyISAM corruptas sin causar ninguna pérdida de datos. La herramienta es compatible con todas las versiones de MySQL Server, incluidas 5.5, 6.x y 8.x.








