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

Cómo arreglar el error 'MySQL server has gone away' en PrestaShop

Actualizado el 17 de octubre de 2025

¿Qué significa el error "MySQL server has gone away" en PrestaShop?

Si estás leyendo esto, probablemente te has encontrado con un mensaje similar a este en tu tienda online: "MySQL server has gone away" o, en algunos casos, un error más confuso como "Error de base de datos: MySQL server has gone away" o incluso una página en blanco en tu back-office.

Este es uno de los errores más comunes (y frustrantes) que puede sufrir cualquier tienda PrestaShop. La buena noticia es que no tiene que ver con que hayas perdido tus productos o tus pedidos. Simplemente significa que la conexión entre PrestaShop y tu base de datos MySQL se ha interrumpido o ha expirado. Es como si el teléfono entre tu tienda y su almacén de datos se hubiera cortado a mitad de una llamada.

A lo largo de esta guía, no solo te explicaré qué significa exactamente el error mysql prestashop, sino que te daré una serie de soluciones paso a paso, ordenadas de la más sencilla a la más avanzada, para que puedas solucionarlo incluso si no eres un experto en servidores. Vamos a ello.

¿Por qué ocurre el error "MySQL server has gone away"?

Antes de lanzarnos a arreglar nada, es importante entender por qué ocurre. El error mysql server has gone away prestashop puede aparecer por varias razones, pero las más habituales son:

  • Tiempo de espera agotado (timeout): MySQL cierra automáticamente las conexiones que llevan demasiado tiempo inactivas. Si tu tienda tarda en procesar una petición, la conexión se cierra y PrestaShop no sabe cómo reaccionar.
  • Paquete demasiado grande: Si intentas importar un CSV grande, instalar un tema pesado o ejecutar una consulta SQL compleja, el paquete de datos puede superar el límite permitido por MySQL y este "aborta" la conexión.
  • El servidor MySQL se ha reiniciado: Si tu hosting ha tenido un fallo o se ha reiniciado el servicio MySQL, las conexiones activas se pierden.
  • Límites de memoria PHP: Si a PHP se le acaba la memoria, puede matar procesos a mitad de camino, incluyendo la conexión a la base de datos.
  • Configuración incorrecta de los valores de espera: Parámetros como wait_timeout o max_allowed_packet en el servidor MySQL están configurados con valores demasiado bajos.

Ahora que sabemos lo que puede estar pasando, vamos a aplicar la solucion mysql prestashop que mejor se adapte a tu caso. Empieza siempre por la primera opción, ya que es la más común y fácil de probar.

Solución 1: Aumentar los límites desde el archivo de configuración (La más rápida)

Esta es la primera solución que debes probar, ya que no requiere acceso a la configuración avanzada del servidor, solo al panel de administración de tu hosting o al administrador de archivos.

Paso 1: Accede al archivo config/settings.inc.php

Dentro de la carpeta raíz de tu instalación de PrestaShop, busca la carpeta config y dentro de ella el archivo llamado settings.inc.php. Este archivo contiene la configuración de conexión a tu base de datos.

Paso 2: Añade las líneas de conexión personalizada

Abre el archivo con un editor de texto plano (como el Bloc de notas o Notepad++) y, justo después de la línea que define _DB_SERVER_, añade las siguientes líneas:

define('_DB_SERVER_', 'localhost'); // (Esta línea ya existe)
define('_DB_PREFIX_', 'ps_'); // (Esta línea ya existe)

// Añade estas líneas:
ini_set('mysqli.reconnect', '1');
ini_set('max_execution_time', '0');
ini_set('max_input_time', '0');
ini_set('memory_limit', '256M');

¿Qué hace esto? Le estamos diciendo a PHP que no tenga límite de tiempo de ejecución y que MySQL pueda reconectarse automáticamente si se cae la conexión. Esto suele resolver el problema al instante en la mayoría de los casos.

Guarda el archivo y sube los cambios a tu servidor. Ahora intenta acceder a tu tienda de nuevo.

[TIP] Si no te sientes cómodo editando archivos directamente, puedes hacerlo desde el "Administrador de Archivos" de tu panel de control (cPanel, Plesk, etc.). Busca la carpeta config, descarga el archivo, edítalo en tu ordenador y vuelve a subirlo.

Solución 2: Modificar los valores de MySQL en el servidor

Si la solución anterior no funciona, el problema probablemente esté en la configuración del propio servidor MySQL. Necesitas aumentar los valores de wait_timeout y max_allowed_packet.

Para ello, debes acceder al archivo de configuración de MySQL. Su nombre y ubicación varían según el panel de control que uses.

Si usas Syspanel (antes HestiaCP)

Si tu hosting utiliza Syspanel (el antiguo HestiaCP), el puerto de acceso es el 2106. Debes iniciar sesión en tu panel con la dirección https://tu-dominio.com:2106. Una vez dentro, busca la sección de "Base de Datos" o "Servidor Web".

[INFO] En Syspanel, la gestión de MySQL se realiza de forma un poco más restrictiva. A menudo, no tendrás acceso directo al archivo my.cnf. En ese caso, tendrás que contactar con el soporte técnico de tu hosting para que apliquen los cambios que te indico a continuación, o buscar la opción "Configuración avanzada" dentro del panel.

En cPanel o Plesk

  1. Accede a tu panel de control.
  2. Busca la sección "Servicios" o "Configuración del servidor".
  3. Localiza el archivo my.cnf o my.ini. En cPanel, a menudo está en /etc/my.cnf. En Plesk, puedes encontrarlo en /etc/mysql/my.cnf.
  4. Edita el archivo y busca las líneas [mysqld]. Debajo de esta sección, añade o modifica las siguientes líneas:
[mysqld]
max_allowed_packet=128M
wait_timeout=300
max_execution_time=300

Explicación: max_allowed_packet=128M permite que MySQL acepte paquetes de datos más grandes (perfecto para importaciones). wait_timeout=300 le dice a MySQL que espere 5 minutos (300 segundos) antes de cerrar una conexión inactiva.

  1. Guarda el archivo y reinicia el servicio MySQL. En cPanel, puedes hacerlo desde "Restart Services". En Plesk, desde "Herramientas y utilidades" > "Restart Services".

[WARNING] Ten mucho cuidado al modificar el archivo my.cnf. Un error de sintaxis puede impedir que MySQL se inicie. Si no estás seguro, haz una copia de seguridad del archivo antes de editarlo.

Solución 3: Aumentar el límite de memoria PHP

A veces, el error no es de MySQL, sino de PHP. Si tu tienda se queda sin memoria, PHP mata el proceso y la conexión a la base de datos se pierde. PrestaShop es una plataforma que consume muchos recursos, especialmente si tienes muchos módulos activos.

Cómo aumentar la memoria PHP en PrestaShop

  1. Crea un archivo php.ini en la raíz de tu PrestaShop: Si no existe, crea uno nuevo. Si ya existe, edítalo.
  2. Añade o modifica la siguiente línea:
memory_limit = 256M
  1. Aumenta el límite de tiempo de ejecución:
max_execution_time = 300
max_input_time = 300

Sube el archivo a la carpeta raíz de tu instalación (donde están las carpetas admin, config, img, etc.).

Si no puedes crear php.ini

Si tu hosting no te permite crear un php.ini, puedes intentar añadir estas líneas al archivo .htaccess que se encuentra en la raíz de tu PrestaShop. Al final del archivo, añade:

php_value memory_limit 256M
php_value max_execution_time 300

[INFO] Algunos hostings compartidos no permiten estas directivas en .htaccess por razones de seguridad. Si ves un error 500 después de hacer esto, elimina las líneas inmediatamente.

Solución 4: Optimizar la configuración de conexión de PrestaShop (Para avanzados)

PrestaShop tiene una clase de conexión a la base de datos que puedes ajustar. Esto es útil si las soluciones anteriores no han funcionado.

Modificar config/defines.inc.php

  1. Abre el archivo config/defines.inc.php.
  2. Busca la línea que dice define('_DB_SERVER_', ...); y justo debajo, añade:
define('_DB_MYSQL_ENGINE_', 'InnoDB');

Esto fuerza a PrestaShop a usar el motor de almacenamiento InnoDB, que es más robusto y maneja mejor las conexiones interrumpidas que MyISAM.

Añadir un script de reconexión automática

En el archivo config/settings.inc.php que ya hemos tocado, podemos añadir una función que se ejecute si la conexión se cae. Justo después de las líneas que añadimos antes, pega este código:

function pSQL($string, $htmlOK = false) {
    // ... (Código original de PrestaShop)
}

function dbReconnect() {
    if (!Db::getInstance()->getLink()) {
        Db::getInstance()->connect();
    }
}
register_shutdown_function('dbReconnect');

Aviso: Esta es una solución más avanzada. Si no te sientes cómodo con el código, es mejor que pruebes las opciones anteriores o contactes con un desarrollador.

Solución 5: Revisar los logs del servidor

Si ninguna de las soluciones anteriores funciona, es hora de ponerse el sombrero de detective. Los logs de error del servidor te dirán exactamente qué está fallando.

Dónde encontrar los logs

  • cPanel: En la sección "Métricas" o "Registros", busca "Error Log" o "Errores de Apache".
  • Syspanel: En el panel de Syspanel (puerto 2106), busca la sección de "Logs" o "Registros". Puede que esté dentro de "Servidor Web" o "Configuración Avanzada".
  • Plesk: En "Sitios web y dominios", haz clic en tu dominio y busca "Registros".

Busca errores que contengan mysql o mysqli. A menudo verás mensajes como:

  • mysqli::real_connect(): (HY000/2006): MySQL server has gone away
  • PHP Fatal error: Allowed memory size of X bytes exhausted

Estos mensajes te darán pistas claras sobre si el problema es de memoria PHP o de tiempo de espera de MySQL.

Preguntas Frecuentes (FAQ)

¿Este error puede hacer que pierda mis pedidos o clientes?

No. El error mysql server has gone away prestashop es un error de conexión temporal. Tus datos están seguros en la base de datos. Una vez que soluciones el problema, tu tienda volverá a funcionar con normalidad y todos tus pedidos, clientes y productos estarán intactos.

¿Es normal que este error ocurra a menudo?

No. Si ocurre de forma frecuente, es una señal de que tu servidor no está bien configurado para las necesidades de PrestaShop. PrestaShop es exigente en cuanto a recursos, y si tu hosting es demasiado básico, es posible que necesites migrar a un servidor más potente o a un hosting especializado en PrestaShop.

¿Puedo evitar este error en el futuro?

Sí, siguiendo las soluciones 1, 2 y 3 de esta guía, reducirás drásticamente las posibilidades de que vuelva a ocurrir. Además, te recomiendo:

  • Mantener PrestaShop y los módulos actualizados: Las versiones nuevas corrigen errores de conexión.
  • No instalar módulos de fuentes no oficiales: Suelen causar conflictos y sobrecargar la base de datos.
  • Realizar copias de seguridad periódicas: Nunca está de más tener una copia de seguridad de tu base de datos en un lugar seguro.

Mi hosting usa Syspanel, ¿cómo accedo a la configuración de MySQL?

Como mencionamos anteriormente, Syspanel (el antiguo HestiaCP) se accede a través del puerto 2106. Sin embargo, la gestión de archivos de configuración de MySQL suele estar restringida en Syspanel. La opción más segura es contactar con el soporte técnico de tu proveedor de hosting y pedirles que aumenten los valores de max_allowed_packet y wait_timeout. Es una petición común y suelen hacerlo sin problema.

He probado todo y sigue sin funcionar, ¿qué hago?

Si has llegado hasta aquí y el error persiste, te sugiero que:

  1. Contactes con tu proveedor de hosting: Explícales que has agotado todas las soluciones a nivel de aplicación y necesitas que ellos revisen la configuración del servidor.
  2. Contrates un desarrollador especializado en PrestaShop: Un profesional puede revisar a fondo tu base de datos y el código de tu tienda para encontrar la causa raíz del problema.

Recuerda que la paciencia es clave. Este error, aunque molesto, tiene solución. Empieza por la solución más sencilla (la del archivo settings.inc.php) y ve subiendo de nivel si es necesario. ¡Buena suerte con tu tienda!

¿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