WordPress caído por WooCommerce («Ha habido un error crítico»): cómo recuperarlo paso a paso

Si su sitio WordPress con WooCommerce muestra de un momento a otro el mensaje «Ha habido un error crítico en esta web» y ni siquiera puede entrar al escritorio, esta guía le puede servir. La escribimos después de resolver el mismo problema en nuestro propio sitio.

¿Le aplica esta guía?

Con el administrador de archivos de su hosting (cPanel u otro), abra el archivo error_log que está en la carpeta public_html. La guía es para usted si aparecen, repetidos, estos dos errores:

  • Table '...wp_actionscheduler_actions' doesn't exist
  • Allowed memory size of ... bytes exhausted ... in wp-includes/class-wpdb.php

Si ve otros errores, su problema es distinto y esta receta no aplica.

¿Qué pasa?

WooCommerce usa una cola de tareas en segundo plano llamada Action Scheduler, que guarda su información en cuatro tablas de la base de datos. Si alguna de esas tablas desaparece, o si la tabla wp_actionscheduler_groups pierde la numeración automática (AUTO_INCREMENT), cada tarea nueva crea un «grupo» repetido. La tabla crece hasta superar el millón de filas y, cuando WordPress la lee, se queda sin memoria y el sitio se cae.

Paso 1. Apague WooCommerce

En el administrador de archivos, entre a public_html/wp-content/plugins y renombre la carpeta woocommerce a woocommerce-off. Escriba los nombres en minúscula: en el servidor Plugins y plugins son carpetas distintas. Recargue su sitio.

  • Si el sitio vuelve, siga al paso 2.
  • Si sigue caído, otro plugin depende de WooCommerce o trae su propia cola de tareas. Renombre toda la carpeta plugins a plugins-off, recargue el sitio para comprobar que carga y devuélvale el nombre plugins. Así quedan desactivados todos los plugins; no los active todavía.

Paso 2. Respalde la base de datos

En cPanel, abra phpMyAdmin, seleccione la base de su sitio y vaya a Exportar. Elija Personalizado, en Compresión elija gzip y dele Exportar. Compruebe que el archivo se descargó completo antes de seguir.

Paso 3. Repare la base de datos

En phpMyAdmin, con su base seleccionada, abra la pestaña SQL. Pegue estas tres líneas juntas y dele Continuar:

TRUNCATE TABLE wp_actionscheduler_groups;
ALTER TABLE wp_actionscheduler_groups MODIFY group_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
DELETE FROM wp_options WHERE option_name IN ('schema-ActionScheduler_StoreSchema','schema-ActionScheduler_LoggerSchema');
  • TRUNCATE vacía la tabla de grupos. Solo contiene etiquetas de la cola: no se pierden pedidos, clientes ni contenido.
  • ALTER le devuelve a la tabla la numeración automática. Sin esta línea, los grupos nuevos chocan entre sí y el registro se llena de errores Duplicate entry '0' for key 'PRIMARY'.
  • DELETE borra las dos marcas que le hacen creer a WooCommerce que sus tablas ya existen, para que las vuelva a crear completas.

phpMyAdmin debe responder con tres mensajes de éxito; el último dice «2 filas eliminadas». Si las tablas de su sitio no empiezan con wp_, cambie wp_ por su prefijo en las tres líneas.

Paso 4. Encienda WooCommerce de nuevo

Devuélvale a la carpeta el nombre woocommerce. En el escritorio de WordPress, vaya a Plugins y active WooCommerce. Luego abra WooCommerce → Estado: al cargar esa página se crean las tablas que faltaban. Si aparece un aviso para actualizar la base de datos de WooCommerce, acéptelo.

Paso 5. Verifique

  • En phpMyAdmin deben existir las cuatro tablas: wp_actionscheduler_actions, wp_actionscheduler_claims, wp_actionscheduler_groups y wp_actionscheduler_logs.
  • En la pestaña Estructura de wp_actionscheduler_groups, la columna group_id debe decir AUTO_INCREMENT.
  • En el error_log ya no deben aparecer nuevos errores como los del principio ni de Duplicate entry.

Paso 6. Reactive los demás plugins

Solo si en el paso 1 tuvo que apagarlos todos. Actívelos uno por uno y recargue el sitio después de cada uno. Si alguno lo vuelve a tumbar, renombre solo la carpeta de ese plugin.

Paso 7. Evite que se repita

Si no sincroniza sus productos con Google Merchant Center, desactive Google for WooCommerce: es el plugin que más tareas genera en esa cola. Y antes de restaurar, migrar u «optimizar» la base de datos con un plugin, haga un respaldo y revise después que las tablas conserven su AUTO_INCREMENT.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *