🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo reparar una base de datos MySQL corrupta en cPanel y DirectAdmin

Actualizado el 2 de mayo de 2026

¿Tu web muestra errores como "Error establishing a database connection" o "Table doesn't exist"? ¿O quizás al entrar en phpMyAdmin ves mensajes como "#145 Table is marked as crashed and should be repaired"? No entres en pánico. Una base de datos MySQL corrupta es uno de los problemas más comunes en el hosting, y la buena noticia es que en la mayoría de los casos tiene una solución sencilla y rápida.

En esta guía extensa y detallada, te voy a explicar paso a paso cómo reparar mysql y recuperar tus tablas mysql corruptas tanto si usas el panel de control cPanel como si usas DirectAdmin. No necesitas ser un experto en programación ni tocar una sola línea de código complejo. Solo tienes que seguir estas instrucciones al pie de la letra.

Vamos a ello.

¿Qué significa que una base de datos esté corrupta?

Antes de empezar a solucionar mysql, es importante que entiendas qué ha pasado. Una base de datos MySQL está formada por archivos físicos en el servidor. Si uno de esos archivos se daña (por un corte de luz, un fallo del disco duro, un cierre inesperado del servicio o incluso una mala optimización), las tablas que contiene dejan de ser legibles.

Imagina que la base de datos es un archivador con cajones (las tablas). Si un cajón se atasca o se rompe, no puedes sacar los documentos que hay dentro. Pues eso es exactamente lo que ocurre. El sistema operativo y MySQL intentan leer el cajón, pero no pueden, y te muestran un error.

Los síntomas más habituales son:

  • Error 500 en tu web.
  • Mensajes de error de conexión a la base de datos.
  • Advertencias en el panel de administración de WordPress o Joomla.
  • Tablas que aparecen en phpMyAdmin con el estado "Using B-tree" o "in use" de forma extraña.
  • Mensajes específicos como "Table 'mi_tabla' is marked as crashed and last (automatic?) repair failed".

No te preocupes, esto no significa que hayas perdido los datos. En el 99% de los casos, los datos siguen ahí, solo necesitan una reparación.

Método 1: Reparar la base de datos con phpMyAdmin (el más fácil)

Tanto cPanel como DirectAdmin incluyen phpMyAdmin, que es la herramienta gráfica por excelencia para gestionar bases de datos. Y sí, tiene una función nativa para reparar mysql. Este es el método más visual y recomendado para principiantes.

Paso 1: Accede a phpMyAdmin

  • En cPanel: Inicia sesión en tu cuenta de hosting. Busca la sección "Bases de Datos" y haz clic en el icono de phpMyAdmin.
  • En DirectAdmin: Inicia sesión en tu panel. Ve a "Gestión de MySQL" y luego haz clic en "phpMyAdmin" (o "Acceso a phpMyAdmin").

Paso 2: Selecciona la base de datos corrupta

En el panel izquierdo de phpMyAdmin verás una lista con todas tus bases de datos. Haz clic en el nombre de la que te da problemas (la que aparece en el error de tu web).

Paso 3: Marca todas las tablas

Una vez dentro de la base de datos, verás una lista de todas las tablas que contiene. En la parte inferior de la lista, hay un enlace que dice "Marcar todas" o un cuadro de selección en la cabecera de la primera columna. Haz clic en "Marcar todas".

Paso 4: Elige la opción "Reparar"

Con todas las tablas seleccionadas, mira el menú desplegable que está justo debajo de la lista (donde pone "Con seleccionados:"). Despliega ese menú y elige la opción "Reparar tabla".

Paso 5: Observa el resultado

phpMyAdmin ejecutará una consulta SQL de reparación sobre cada tabla. Verás una pantalla con los resultados. Si todo ha ido bien, verás un mensaje de "OK" o "La tabla ya está actualizada".

[INFO] Si el error persiste, repite el proceso pero eligiendo la opción "Más" y luego "Reparar tabla" de nuevo. A veces hay que intentarlo dos veces seguidas.

¿Qué hacer si phpMyAdmin no repara la tabla?

A veces el motor de almacenamiento (MyISAM o InnoDB) está tan dañado que la reparación simple no funciona. En ese caso, puedes intentar una reparación más avanzada desde phpMyAdmin:

  1. Selecciona la tabla problemática (haz clic en su nombre).
  2. Ve a la pestaña "Operaciones".
  3. Busca la sección "Mantenimiento de tablas".
  4. Haz clic en "Reparar tabla" (si no funciona) o en "Optimizar tabla" (si el problema es de fragmentación, no de corrupción).

Método 2: Reparar MySQL desde la terminal (SSH) en cPanel y DirectAdmin

Si tienes acceso SSH a tu servidor (algo que ofrecen la mayoría de los planes de hosting avanzados y VPS), puedes usar los comandos nativos de MySQL para reparar mysql de forma mucho más potente. Este método es más técnico, pero es el más fiable si la corrupción es grave.

Paso 1: Conéctate por SSH

Usa un cliente como PuTTY (en Windows) o la terminal (en Mac/Linux). Conéctate con tu usuario y contraseña de root o de un usuario con privilegios de administración.

Paso 2: Accede al cliente MySQL

Escribe el siguiente comando y pulsa Enter:

mysql -u usuario -p

Te pedirá la contraseña de ese usuario. Si no la recuerdas, puedes usar el usuario root y la contraseña que configuraste al instalar MySQL (o la que te dio tu proveedor).

Paso 3: Selecciona la base de datos

Una vez dentro del cliente MySQL, escribe:

USE nombre_de_tu_base_de_datos;

Reemplaza "nombre_de_tu_base_de_datos" por el nombre real.

Paso 4: Repara todas las tablas de una vez

La forma más rápida de solucionar mysql es reparar todas las tablas de la base de datos en un solo comando. Escribe:

REPAIR TABLE nombre_de_tabla1, nombre_de_tabla2;

Pero si tienes muchas tablas y no quieres escribir todos los nombres, puedes usar el comando mágico que lo hace todo:

REPAIR TABLE `tabla1` USE_FRM;

[WARNING] El comando USE_FRM es más agresivo. Solo úsalo si el REPAIR normal falla, ya que reconstruye la tabla desde el archivo de definición (.frm) y puede perder datos si el archivo de datos (.MYD) está muy dañado.

Alternativa: Reparar todas las tablas con un bucle

Si eres un poco más atrevido, puedes usar este truco para reparar todas las tablas de la base de datos sin escribir cada nombre:

SELECT CONCAT('REPAIR TABLE ', table_name, ';') 
FROM information_schema.tables 
WHERE table_schema = 'nombre_de_tu_base_de_datos';

Esto generará una lista de comandos REPAIR. Copia la salida y pégala en el cliente MySQL para ejecutarlos todos.

Método 3: Reparación forzada con la herramienta mysqlcheck

mysqlcheck es una utilidad de línea de comandos que viene incluida con MySQL. Es perfecta para reparar mysql sin necesidad de entrar en el cliente interactivo.

Desde cPanel o DirectAdmin con SSH

Conéctate por SSH y ejecuta el siguiente comando:

mysqlcheck -u usuario -p --auto-repair --databases nombre_de_tu_base_de_datos

Te pedirá la contraseña. Este comando conectará automáticamente, comprobará todas las tablas y las reparará si es necesario.

Si quieres reparar todas las bases de datos del servidor a la vez (útil si no sabes cuál está dañada), usa:

mysqlcheck -u root -p --auto-repair --all-databases

[TIP] Si el proceso se queda colgado o tarda mucho, es que la tabla es muy grande. Ten paciencia. No interrumpas el proceso con Ctrl + C porque podrías empeorar la corrupción.

Método 4: Reparar desde la línea de comandos en cPanel (WHM)

Si tienes acceso a WHM (el panel de administración de cPanel), hay una herramienta gráfica muy útil que hace el trabajo duro por ti.

  1. Inicia sesión en WHM.
  2. Busca la sección "Home" > "SQL Services" > "Repair a Database".
  3. Selecciona la base de datos que quieres reparar en el menú desplegable.
  4. Haz clic en "Repair".

WHM ejecutará mysqlcheck en segundo plano y te mostrará el resultado en pantalla. Es la opción más segura si no quieres usar SSH.

Método 5: Reparar MySQL en DirectAdmin sin SSH

DirectAdmin no tiene una herramienta gráfica de reparación tan clara como cPanel, pero puedes usar una pequeña trampa.

  1. Entra en DirectAdmin.
  2. Ve a "Gestión de MySQL" > "Lista de bases de datos".
  3. Haz clic en el icono de la base de datos que falla (normalmente es una lupa o un enlace).
  4. Se abrirá phpMyAdmin.
  5. Sigue el Método 1 de esta guía (seleccionar todas las tablas y elegir "Reparar").

Si no tienes acceso a phpMyAdmin desde DirectAdmin, siempre puedes pedir a tu proveedor de hosting que ejecute la reparación desde el servidor.

¿Qué hacer si nada de esto funciona? (Recuperación de emergencia)

Si has probado todos los métodos y la tabla sigue corrupta, no desesperes. Aún hay esperanza.

Opción A: Utilizar el archivo de respaldo

Lo primero que debes hacer es mirar si tienes una copia de seguridad reciente. Tanto cPanel como DirectAdmin generan copias automáticas (normalmente cada día).

  • En cPanel: Ve a "Archivos" > "Copias de seguridad" o "Backup" y descarga la copia de la base de datos afectada.
  • En DirectAdmin: Ve a "Gestión de copias de seguridad" y haz lo mismo.

Luego, importa esa copia en phpMyAdmin (pestaña "Importar") o desde la línea de comandos con:

mysql -u usuario -p nombre_base < archivo.sql

Opción B: Usar myisamchk (solo para tablas MyISAM)

Si tu tabla es de tipo MyISAM (lo puedes ver en phpMyAdmin, en la columna "Tipo"), puedes usar esta herramienta de bajo nivel. Primero detén el servicio MySQL:

sudo systemctl stop mysql

Y luego ejecuta:

myisamchk --recover /var/lib/mysql/nombre_base/nombre_tabla.MYI

Reemplaza la ruta con la correcta en tu servidor. Después, reinicia MySQL:

sudo systemctl start mysql

[WARNING] No uses myisamchk si no estás seguro de lo que haces, ya que puede dañar aún más la tabla si no se usa correctamente. Es mejor dejarlo como último recurso.

Consejos para evitar futuras corrupciones de base de datos

Una vez que hayas conseguido reparar mysql, es hora de tomar medidas preventivas para que no vuelva a ocurrir.

  • Activa las copias de seguridad automáticas: Tanto cPanel como DirectAdmin te permiten programar copias diarias o semanales. Configúralas.
  • Usa el motor InnoDB: Es más robusto que MyISAM y soporta mejor los cortes de energía. Puedes cambiar el motor de tus tablas desde phpMyAdmin (pestaña "Operaciones" > "Motor de almacenamiento").
  • No fuerces el apagado del servidor: Si tienes un VPS, apaga el sistema siempre con el comando shutdown o desde el panel del proveedor, nunca cortando la corriente.
  • Optimiza tus tablas regularmente: Ejecuta OPTIMIZE TABLE una vez al mes para reducir la fragmentación.
  • Actualiza MySQL: Las versiones antiguas tienen más bugs de estabilidad. Mantén tu servidor actualizado.

Preguntas frecuentes (FAQ)

¿Cuánto tiempo tarda en repararse una base de datos corrupta?

Depende del tamaño. Una tabla pequeña (menos de 100 MB) se repara en segundos. Una tabla de varios GB puede tardar varios minutos. No interrumpas el proceso.

¿Perderé datos al reparar?

En la mayoría de los casos, no. La reparación intenta recuperar los datos intactos. Solo en casos muy extremos (archivos físicos dañados) podrías perder algunas filas. Por eso es vital tener copias de seguridad.

¿Puedo reparar una base de datos desde el hosting sin ser admin?

Sí, con el Método 1 (phpMyAdmin) es suficiente. No necesitas permisos de root ni SSH.

¿Qué significa el error "#145 Table is marked as crashed"?

Es el mensaje clásico de MySQL cuando detecta que una tabla está corrupta. Significa que el sistema ha marcado la tabla como "crasheada" y necesita una reparación inmediata. Sigue el Método 1 o el Método 3 para solucionarlo.

¿Sirve para Syspanel (HestiaCP)?

Sí, aunque la guía se centra en cPanel y DirectAdmin, los pasos de phpMyAdmin y SSH son universales. Si usas Syspanel (el antiguo HestiaCP), recuerda que el acceso a su panel es a través del puerto 2106 (ejemplo: https://tu-servidor:2106). Dentro de Syspanel, busca la sección de bases de datos y accede a phpMyAdmin desde allí. El proceso de reparación es idéntico al descrito.

¿Y si no tengo acceso a phpMyAdmin?

Ponte en contacto con tu proveedor de hosting. La mayoría de ellos tienen herramientas internas para solucionar mysql y te lo harán en minutos. No intentes hackear el sistema, solo abre un ticket de soporte.

Resumen final

Reparar una base de datos MySQL corrupta es un proceso que, aunque suena aterrador, es bastante rutinario en el mundo del hosting. Como has visto, tienes múltiples vías para hacerlo:

  1. La vía fácil: phpMyAdmin (clic, clic, reparado).
  2. La vía técnica: SSH con mysqlcheck o comandos SQL.
  3. La vía del proveedor: WHM o ticket de soporte.

Lo más importante es que no borres nada y que no reinicies el servidor a lo loco mientras intentas reparar. Sigue los pasos con calma, y si uno falla, pasa al siguiente.

Espero que esta guía te haya sido de gran ayuda. Si te ha funcionado, compártela con otros usuarios que estén sufriendo el mismo problema. Y recuerda: la prevención (copias de seguridad + InnoDB) es siempre mejor que la curación. ¡Buena suerte con tu base de datos!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel