Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

SQL

Sentencias

ALTER TABLE ANALYZE TABLE BACKUP TABLE BEGIN BEGIN WORK CHECK TABLE CHECKSUM TABLE COMMIT CREATE DATABASE CREATE TABLE CREATE USER DELETE DESCRIBE DO DROP DATABASE DROP INDEX DROP TABLE DROP USER FLUSH GRANT HANDLER INSERT INSERT ... SELECT INSERT DELAYED JOIN KILL LOAD DATA LOCK TABLES OPTIMIZE TABLE RENAME TABLE REPLACE RESET REVOKE ROLLBACK SELECT SET SET TRANSACTION SHOW SHOW CHARACTER SET SHOW COLLATION SHOW COLUMNS SHOW CREATE DATABASE SHOW CREATE TABLE SHOW CREATE VIEW SHOW DATABASES SHOW ENGINES SHOW ERRORS SHOW GRANTS SHOW INDEX SHOW INNODB STATUS SHOW KEYS SHOW LOGS SHOW PRIVILEGES SHOW PROCESSLIST SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW VARIABLES SHOW WARNINGS START TRANSACTION TRUNCATE UNION UNLOCK TABLES UPDATE USE

REPAIR TABLE

REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name...] 
   [QUICK] [EXTENDED] [USE_FRM]

REPAIR TABLE funciona sólo con tablas MyISAM y es lo mismo que ejecutar myisamchk -r table_name en la tabla.

Normalmente nunca se tendrá que ejecutar este comando, pero si ocurre un desastre es muy probable que se puedan recuperar todos los datos de una tabla MyISAM con REPAIR TABLE. Si las tablas están muy corruptas, se debe intentar encontrar el motivo, para eliminar la necesidad de usar REPAIR TABLE.

REPAIR TABLE repara una tabla posiblemente corrupta. El comando devuelve una tabla con las columnas siguientes:

Columna Valor
Table Nombre de tabla
Op Siempre "repair" (reparar)
Msg_type Uno de "status", "error", "info" o "warning" (estado, error, información o aviso)
Msg_text El mensaje

La sentencia puede producir muchas filas de información para cada tabla reparada. La última fila será de estado y debe ser normalemente OK. Si no se obtiene un OK, se debe intentar reparar la tabla con myisamchk --safe-recover, ya que REPAIR TABLE aún no tiene implementadas todas las opciones de myisamchk. En un futuro cercano, será más flexible.

Si se usa QUICK, REPAIR TABLE intenta reparar sólo el árbol de índices.

Si se usa EXTENDED, MySQL creará el índice fila a fila en lugar de crear un índice de una vez mediante ordenamiento; esto puede ser mejor que ordenar en claves de longitud constante si se tienen claves CHAR largas que se comprimen bien. Este tipo de reparación se como si se usase myisamchk --safe-recover.

Desde MySQL 4.0.2, existe un modo USE_FRM para REPAIR. Hay que usarlo si el fichero '.MYI' se ha perdido o si su cabecera está corrupta. En este modo MySQL recreará la tabla, usando información del fichero '.frm'. Este tipo de reparación no se puede hacer con myisamchk.

Cuidado: si mysqld muere durante un REPAIR TABLE, es esencial que lo primero que se haga sea otro REPAIR en la tabla antes de ejecutar cualquier otro comando en ella. (Por supuesto, es siempre mejor arrancar con un backup). En el peor caso se puede obtener un fichero de índices limpio sin información sobre el fichero de datos y con el siguiente comando se sobrescribe el fichero de datos. No es probable, pero es posible.

Antes de MySQL 4.1.1, los comandos REPAIR no actualizaban el diario binario. Desde MySQL 4.1.1 sí se hace, salvo que se use la palabra opcional NO_WRITE_TO_BINLOG (o su alias LOCAL).

(4.0)