REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLEtbl_name
[,tbl_name
] ... [QUICK] [EXTENDED] [USE_FRM]
REPAIR TABLE
repara una tabla posiblemente
corrupta. Por defecto, tiene el mismo efecto que
myisamchk --recover
tbl_name
. REPAIR
TABLE
funciona sólo en tablas
MyISAM
.
Normalmente nunca debe ejecutar este comando. Sin embargo, si
hay un desastre, REPAIR TABLE
puede
recuperar todos los datos de una tabla
MyISAM
. Si sus tablas se corrompen a
menudo, debe intentar encontrar la razón de lo que lo causa,
para eliminar la necesidad de usar REPAIR
TABLE
. Consulte Sección A.4.2, “Qué hacer si MySQL sigue fallando (crashing)”. Consulte
Sección 14.1.4, “Problemas en tablas MyISAM
”.
El comando retorna una tabla con las siguientes columnas:
Columna | Valor |
Tabla |
Nombre de tabla |
Op |
Siempre es repair
|
Msg_type |
Es status , error ,
info , o warning
|
Msg_text |
Mensaje |
El comando REPAIR TABLE
puede producir
muchos registros de información para cada tabla reparada. El
último registro tiene un valor Msg_type
de
status
y Msg_test
normalmente debe ser OK
. Si no obtiene
OK
, debe intentar reparar la tabla con
myisamchk --safe-recover, ya que
REPAIR TABLE
no implementa todas las
opciones de myisamchk. Plaenamos hacerlo
más flexible en el futuro.
Si se da QUICK
, REPAIR
TABLE
intenta reparar sólo el árbol índice. Este
tipo de reparación es como lo que hace myisamchk
--recover --quick.
Si usa EXTENDED
, MySQL crea el índice
registro a registro en lugar de crear un índice a la vez
ordenando. Este tipo de reparación es como el hecho por
myisamchk --safe-recover.
También hay un modo USE_FRM
disponible en
MySQL 5.0 para REPAIR TABLE
. Use esto si el
fichero índice .MYI
no existe o su
cabecera está corrupta. En este modo, MySQL recrea el fichero
.MYI
usando información desde el fichero
.frm
. Este tipo de reparación no puede
hacerse con myisamchk.
Nota: Use este modo
sólo si no puede usar modos
REPAIR
normalmente. La cabecera
.MYI
contiene información importante de
metadatos (en particular, los valores actuales
AUTO_INCREMENT
y Delete
link
) que se pierden en REPAIR ...
USE_FRM
. No use USE_FRM
si la
tabla está comprimida, ya que esta información se almacena
en el fichero .MYI
.
En MySQL 5.0, los comandos REPAIR TABLE
se
escriben en el log binario a no ser que la palabra opcional
NO_WRITE_TO_BINLOG
(o su alias
LOCAL
) se use.
Atención: Si el servidor
muere durante una operación REPAIR TABLE
,
es esencial tras restaurarla que inmediatamente ejecute otro
comando REPAIR TABLE
para la tabla antes de
realizar cualquier otra operación en ella. (Siempre es una
buena idea empezar haciendo una copia de seguridad.) En el
peor caso, puede tener un nuevo fichero índice limpio sin
información acerca del fichero de datos, y luego la siguiente
operación que realice puede sobreescribir el fichero de
datos. Este es un escenario improbable pero posible.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.