Varios métodos para reparar tablas corruptas en servidor de base de datos MySQL y MariaDB (modo gráfico con Workbench y por línea de comandos).

Reparar tablas MySQL y MariaDB en modo gráfico con MySQL Workbench

Abriremos MySQL Workbench y realizaremos la conexión al servidor de base de datos MySQL o MariaDB. Pulsaremos en «Schemas» [1], desplegaremos el esquema (catálogo o base de datos) con el que queramos trabajar [2]. Desplegaremos las tablas del esquema [3] y seleccionaremos una de ellas (da igual cual). Sobre la tabla seleccionada, pulsaremos con el botón derecho y elegiremos «Table Maintenance…» [4]:

Seleccionaremos las tablas que queramos analizar o reparar y pulsaremos en «Analyze Table» para analizar y reparar o en «Optimize Table» para optimizar la tabla:

En realidad, lo que hace el modo gráfico es ejecutar las siguientes sentencias SQL para cada tabla seleccionada:

TareaComandoParámetros
Analizar y almacenar la distribución de claves de una tablaanalyze table nombre_tabla;NO_WRITE_TO_BINLOG
Reorganizar almacenamiento físico de las tablas y los índices (optimizar)optimize table nombre_tabla;
NO_WRITE_TO_BINLOG
Chequear tabla (comprobar si tiene errores)check table nombre_tabla;Medium, Quick, Extended, For Upgrade, FAST, CHANGED
Reparar tabla con erroresrepair table nombre_tabla;NO_WRITE_TO_BINLOG, LOCAL, QUICK, EXTENDED, USE_FRM

Con lo cual, desde una ventana donde podamos ejecutar SQL, podremos analizar, optimizar o chequear tablas, por ejemplo:

En cada operación mostrará el estado de ejecución (el resultado). Si la tabla está correcta o si la operación se ha ejecutado correctamente mostrará OK.

Para reparar una tabla con errores desde el modo gráfico, también podemos usar el comando «repair table…», por ejemplo:

En el caso de que no pueda aplicar alguna de las tareas (reparar, optimizar, analizar) en alguna tabla (normalmente por su motor), mostrará un mensaje indicándolo:

Table does not support optimize, doing recreate + analyze instead.

Reparar tablas erróneas MySQL MariaDB por comando

Para reparar todas las tablas de todos los catálogos de un servidor MySQL/MariaDB directamente, podemos hacerlo por comando, ejecutando:

En este caso, se analizarán y repararán (si tienen errores) todas las tablas de todas las bases de datos del servidor MySQL/MariaDB desde el que se ha ejecutado el comando:

También podremos analizar y reparar una o varias tablas de una o varias bases de datos. Por ejemplo, para analizar/reparar las tablas factura y presupuesto de la base de datos proyectoa_gi, usaremos el comando: