Seguramente alguna vez te has encontrado con tus tablas de MySQL ( MyISAM ) corruptas y vaya chasco!
Aquí os dejo unos pasos para intentar recuperarlas,
Entre comillas dobles y en cursiva os dejo los comando a ejecutar.
OJO, estas instrucciones solo funcionan con Bases de Datos y Tablas MyISAM
- en shell de MySQL: «check table nombre_tabla extended;» Comprobamos la tabla
- en shell de MySQL: «repair table nombre_tabla;» Reparamos la tabla con la utilidad de MySQL
- Si lo anterior no funciona, en shell del sistema: «myisamchk -r /var/lib/mysql/base-de-datos/laTabla.MYI» Repara un poquito mejor la tabla…o al menos lo intenta
- Si lo anterior no funciona, en shell del sistema: «myisamchk -r –safe-recover /var/lib/mysql/base-de-datos/laTabla.MYI» Repara la tabla un poquito mejor que la anterior opción
- Si lo anterior no funciona, la tabla está KO, puedes borrarla tranquilamente porque no la vas a recuperar en la vida y si acaso tirarnos de los pelos si no teníamos una copia de seguridad.
Aquí os dejo un ejemplito real ( con nombres ficticios ),
Paso 1
mysql> check table nombre_tabla extended;
+————————————————+——-+———-+————————————————————————————————————-+
| Table | Op | Msg_type | Msg_text |
+————————————————+——-+———-+————————————————————————————————————-+
| basededatos.nombre_tabla | check | error
| Table upgrade required. Please do «REPAIR TABLE `nombre_tabla`» or dump/reload to fix it! |
+————————————————+——-+———-+————————————————————————————————————-+
1 row in set (0.00 sec)
Paso 2
mysql> repair table nombre_tabla;
+————————————————+——–+———-+——————————————————————————————————————-+
| Table | Op | Msg_type | Msg_text |
+————————————————+——–+———-+——————————————————————————————————————-+
| basededatos.nombre_tabla | repair | Error | Table ‘./basededatos/nombre_tabla’ is marked as crashed and last (automatic?) repair failed |
| basededatos.nombre_tabla | repair | Error | Table ‘nombre_tabla’ is marked as crashed and last (automatic?) repair failed |
| basededatos.nombre_tabla | repair | status | Table is already up to date |
+————————————————+——–+———-+——————————————————————————————————————-+
3 rows in set (0.01 sec)
Paso 3
[root@servidor sql]# myisamchk -r /var/lib/mysql/basededatos/nombretabla.MYI
– recovering (with sort) MyISAM-table ‘/var/lib/mysql/basededatos/nombre_tabla.MYI’
Data records: 2410985
– Fixing index 1
– Fixing index 2
– Fixing index 3
– Fixing index 4
– Fixing index 5
– Fixing index 6
– Fixing index 7
– Fixing index 8
[root@7por7 sql]#
Paso 4
En este caso no hizo falta con el Paso 3 la tabla se arregló 🙂