FUOC • 71Z799014MO
53
Bases de datos en MySQL
Para obtener información del significado del error 145, usaremos la utilidad en línea de comandos perror:
$ perror 145 145 = Table was marked as crashed and should be repaired
Después de un mensaje como el anterior, es el momento de realizar una verificación de la integridad de la tabla para obtener el reporte.
mysql> check table precios extended; +-------------+------+----------+--------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------+------+----------+--------------------------------------+ |demo.precios |check | error |Size of datafile is:450 Should be:452 | |demo.precios |check | error | Corrupt | +-------------+------+----------+--------------------------------------+ 2 rows in set (0.00 sec)
En este caso localizamos dos errores en la tabla. La opción extended es uno de los cinco niveles de comprobación que se pueden solicitar para verificar una tabla. Tipos de verificación Tipo
Significado
quick
No revisa las filas en busca de referencias incorrectas.
fast
Solamente verifica las tablas que no fueron cerradas adecuadamente.
changed
Verifica sólo las tablas modificadas desde la última verificación o que no se han cerrado apropiadamente.
medium
Revisa las filas para verificar que los ligados borrados son correctos, verifica las sumas de comprobación de las filas.
extended
Realiza una búsqueda completa en todas las claves de cada columna. Garantiza el 100% de la integridad de la tabla.
La sentencia repair table realiza la reparación de tablas tipo MyISAM corruptas:
mysql> repair table precios; +-------------+------+---------+--------------------------------------+ | Table | Op | Msg_type| Msg_text | +-------------+------+---------+--------------------------------------+ |demo.precios |repair| info | Wrong bytesec: 0-17-1 at 168;Skipped | |demo.precios |repair| warning | Number of rows changed from 20 to 7 | |demo.precios |repair| status | OK | +-------------+-------+--------+--------------------------------------+ 3 rows in set (0.04 sec)
El segundo mensaje informa de la pérdida de 13 filas durante el proceso de reparación. Esto significa, como es natural, que el comando repair table es útil sólo en casos de extrema necesidad, ya que no garantiza la recuperación total de la información. En la práctica, siempre es mejor realizar la restauración de la información utilizando las copias de seguridad. En caso de desastre, se debe conocer el motivo que origina la corrupción de las tablas y tomar las medidas adecuadas para evitarlo. En lo que respecta a la estabilidad de MySQL, se puede confiar en que muy probablemente nunca será necesario utilizar el comando repair table.