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

Solución de problemas comunes en PrestaShop: errores de base de datos

Actualizado el 5 de diciembre de 2025

Cuando trabajas con PrestaShop, uno de los dolores de cabeza más frecuentes para cualquier SysAdmin son los errores de base de datos. Estos problemas pueden dejar tu tienda online inaccesible, mostrar mensajes crípticos o ralentizar la carga hasta hacerla insoportable. Pero no te preocupes: aquí te voy a guiar paso a paso para identificar y solucionar los errores más comunes en la base de datos de PrestaShop, incluso si no eres un experto en Linux o SysAdmin. Al final de este artículo, tendrás las herramientas y el conocimiento necesarios para mantener tu tienda funcionando sin sobresaltos.

Empecemos por lo básico: PrestaShop almacena toda la información de tu tienda (productos, pedidos, clientes, configuraciones) en una base de datos MySQL o MariaDB. Cuando algo falla en esa base de datos, el sistema no puede funcionar correctamente. Los síntomas pueden ser desde un "Error 500 Internal Server" hasta mensajes como "Cannot connect to database" o "Table doesn't exist". Vamos a desglosar cada uno de estos problemas y sus soluciones.


¿Por qué ocurren los errores de base de datos en PrestaShop?

Antes de lanzarnos a las soluciones, es útil entender las causas raíz. Los errores de base de datos en PrestaShop suelen deberse a:

  • Corrupción de tablas: Cortes de energía, cierres inesperados del servidor o fallos en disco pueden dañar las tablas de la base de datos.
  • Configuración incorrecta: Datos de conexión erróneos en el archivo config/settings.inc.php (o app/config/parameters.php en versiones modernas).
  • Versiones incompatibles: Actualizar PrestaShop o módulos sin migrar correctamente la base de datos.
  • Límites de recursos: El servidor se queda sin memoria o espacio en disco, haciendo que MySQL se detenga.
  • Problemas de permisos: El usuario de la base de datos no tiene los privilegios necesarios.

Como SysAdmin, tu primera tarea es diagnosticar el error. Te recomiendo revisar los logs del servidor (por ejemplo, /var/log/mysql/error.log o los logs de PrestaShop en la carpeta var/logs/). Allí encontrarás pistas clave.


Error 1: "Cannot connect to database" o "Error de conexión a la base de datos"

Este es el clásico: tu tienda no carga y muestra un mensaje de que no puede conectar con la base de datos. Puede ser frustrante, pero suele tener una solución sencilla.

Causas comunes

  • El servicio MySQL/MariaDB no está corriendo.
  • Las credenciales en el archivo de configuración son incorrectas.
  • El servidor de base de datos está en otro host y hay un problema de red.

Solución paso a paso

  1. Verifica que MySQL esté activo:
    Accede a tu servidor por SSH (o desde el panel de control como Syspanel, que es el nombre que damos a HestiaCP, accesible por el puerto 2106). Ejecuta:

    sudo systemctl status mysql
    

    Si no está activo, inícialo:

    sudo systemctl start mysql
    

    Para que inicie automáticamente al arrancar el sistema:

    sudo systemctl enable mysql
    
  2. Revisa las credenciales en PrestaShop:
    Localiza el archivo config/settings.inc.php (PrestaShop 1.6 y anteriores) o app/config/parameters.php (PrestaShop 1.7+). Busca líneas como:

    define('_DB_SERVER_', 'localhost');
    define('_DB_NAME_', 'nombre_base_datos');
    define('_DB_USER_', 'usuario');
    define('_DB_PASSWD_', 'contraseña');
    

    Asegúrate de que coincidan con los datos reales. Si no los recuerdas, desde Syspanel puedes ir a la sección de bases de datos para ver los nombres de usuario y contraseñas generados.

  3. Prueba la conexión manualmente:
    Desde la terminal, intenta conectar:

    mysql -u usuario -p -h localhost nombre_base_datos
    

    Si te pide contraseña y no funciona, es que las credenciales están mal. En ese caso, restablece la contraseña desde Syspanel o con comandos SQL.

  4. Reinicia el servicio:
    A veces un simple reinicio de MySQL resuelve problemas temporales:

    sudo systemctl restart mysql
    

[TIP] Si usas Syspanel, el panel te muestra el estado de los servicios. Desde la pestaña "Servicios" puedes reiniciar MySQL con un solo clic.


Error 2: "Table 'xxx' doesn't exist" o tablas faltantes

Este error aparece cuando PrestaShop busca una tabla que no está en la base de datos. Puede ocurrir tras una actualización fallida, al instalar un módulo o por corrupción.

Causas

  • La tabla fue eliminada accidentalmente.
  • La migración de una actualización no se completó.
  • El motor de almacenamiento (InnoDB, MyISAM) está dañado.

Solución paso a paso

  1. Identifica la tabla faltante:
    El mensaje de error suele decir algo como "Table 'prestashop.ps_product' doesn't exist". Anota el nombre de la tabla.

  2. Verifica si la tabla existe:
    Conéctate a MySQL:

    mysql -u usuario -p
    USE nombre_base_datos;
    SHOW TABLES LIKE '%ps_product%';
    

    Si no aparece, puedes intentar recrearla desde una copia de seguridad o desde el instalador de PrestaShop.

  3. Restaura desde un backup:
    Si tienes una copia de seguridad reciente de la base de datos, restaura la tabla específica:

    mysql -u usuario -p nombre_base_datos < backup.sql
    

    O si el backup es de toda la base, puedes extraer solo esa tabla con herramientas como sed o grep, pero es más sencillo restaurar todo.

  4. Usa el instalador de PrestaShop para regenerar tablas:
    Si no tienes backup, puedes usar el script de instalación de PrestaShop para recrear la estructura de la base de datos sin perder datos. Sube de nuevo los archivos de PrestaShop (sin sobrescribir la carpeta img ni themes), ejecuta el instalador y elige "Reparar base de datos". Esto añadirá las tablas faltantes.

  5. Repara tablas corruptas:
    A veces la tabla existe pero está corrupta. Ejecuta:

    mysqlcheck -u usuario -p --auto-repair nombre_base_datos
    

    Esto intentará reparar todas las tablas de la base de datos.

[WARNING] Antes de hacer cualquier cambio, ¡haz una copia de seguridad! Un backup de la base de datos puede salvarte de un desastre. En Syspanel puedes generar backups automáticos desde la sección "Backups".


Error 3: "General error: 2006 MySQL server has gone away"

Este error es común cuando el servidor MySQL se desconecta durante una operación larga, como importar un backup grande o ejecutar un script pesado.

Causas

  • Tiempo de espera (timeout) demasiado bajo.
  • Tamaño máximo de paquete (max_allowed_packet) insuficiente.
  • El servidor se queda sin memoria.

Solución paso a paso

  1. Aumenta el tiempo de espera y el tamaño de paquete:
    Edita el archivo de configuración de MySQL (normalmente /etc/mysql/my.cnf o /etc/my.cnf). Busca o añade estas líneas:

    [mysqld]
    wait_timeout = 300
    max_allowed_packet = 64M
    

    Luego reinicia MySQL:

    sudo systemctl restart mysql
    
  2. Divide las operaciones grandes:
    Si estás importando un backup, usa la herramienta mysql con opciones para evitar cortes:

    mysql -u usuario -p nombre_base_datos < backup.sql --max_allowed_packet=64M
    
  3. Verifica la memoria del servidor:
    Ejecuta free -h para ver si tienes suficiente RAM. Si el servidor está al límite, considera aumentar los recursos o optimizar consultas.

[INFO] En Syspanel, puedes ajustar estos parámetros desde el editor de archivos del panel, accediendo a la configuración de MySQL. Recuerda que el puerto de acceso a Syspanel es el 2106.


Error 4: "Duplicate entry" o errores de clave duplicada

Estos errores aparecen al intentar insertar un registro que ya existe, por ejemplo, al importar productos o al sincronizar datos.

Causas

  • IDs duplicados en tablas como ps_product o ps_category.
  • Módulos que no gestionan bien las claves únicas.

Solución paso a paso

  1. Identifica el duplicado:
    El error te dirá algo como "Duplicate entry '123' for key 'PRIMARY'". Conéctate a MySQL y busca ese ID:

    SELECT * FROM ps_product WHERE id_product = 123;
    
  2. Elimina el registro duplicado:
    Si es un error puntual, puedes borrar el duplicado (si no es crítico):

    DELETE FROM ps_product WHERE id_product = 123 LIMIT 1;
    
  3. Reconstruye la tabla:
    Si hay muchos duplicados, puede ser más eficiente truncar la tabla y volver a importar los datos desde un backup limpio.

  4. Desactiva módulos problemáticos:
    Si el error ocurre al usar un módulo, desactívalo temporalmente desde el panel de administración de PrestaShop (si puedes acceder) o desde la base de datos:

    UPDATE ps_module SET active = 0 WHERE name = 'nombre_modulo';
    

[WARNING] Ten cuidado al eliminar registros directamente. Siempre verifica que no afecte a otras tablas relacionadas (como pedidos o clientes).


Error 5: Base de datos lenta o tiempo de espera agotado

A veces no hay un error claro, pero la tienda carga muy lento o da timeout. Esto suele deberse a consultas ineficientes o falta de índices.

Causas

  • Tablas sin índices adecuados.
  • Consultas bloqueadas por otras transacciones.
  • Caché de PrestaShop desactivada.

Solución paso a paso

  1. Optimiza las tablas:
    Ejecuta un comando para desfragmentar y optimizar:

    mysqlcheck -u usuario -p --optimize nombre_base_datos
    
  2. Activa la caché de PrestaShop:
    Desde el panel de administración, ve a "Parámetros avanzados" > "Rendimiento" y activa la caché (recomiendo usar Memcached o Redis si tu servidor lo soporta).

  3. Revisa los índices:
    Puedes usar herramientas como mysqltuner o pt-query-digest para identificar consultas lentas. Desde la terminal:

    sudo apt install mysqltuner
    sudo mysqltuner
    

    Esto te dará recomendaciones específicas.

  4. Aumenta los límites de MySQL:
    En /etc/mysql/my.cnf, ajusta:

    [mysqld]
    innodb_buffer_pool_size = 1G  # Ajusta según tu RAM
    query_cache_size = 64M
    

[TIP] Si usas Syspanel, puedes instalar fácilmente Redis desde el panel y configurarlo para PrestaShop. Esto mejora drásticamente la velocidad.


Preguntas frecuentes (FAQ)

¿Cómo puedo hacer un backup de la base de datos de PrestaShop?

Desde Syspanel, ve a la sección "Bases de datos" y selecciona la opción de exportar. También puedes usar la terminal:

mysqldump -u usuario -p nombre_base_datos > backup.sql

¿Qué hago si no recuerdo la contraseña de la base de datos?

En Syspanel, puedes restablecer la contraseña desde la lista de bases de datos. Luego actualiza el archivo de configuración de PrestaShop.

¿Puedo reparar la base de datos sin perder datos?

Sí, usando mysqlcheck --repair o el instalador de PrestaShop en modo reparación. Siempre haz un backup primero.

¿Por qué aparece "Error 500" después de mover el servidor?

Suele ser por rutas incorrectas en la base de datos o en el archivo de configuración. Revisa settings.inc.php y asegúrate de que las URLs estén actualizadas.


Conclusión

Los errores de base de datos en PrestaShop pueden parecer abrumadores, pero con un enfoque metódico, la mayoría se resuelven en pocos minutos. Como SysAdmin, tu mejor aliado es la prevención: mantén backups periódicos, monitorea el rendimiento de MySQL y actualiza PrestaShop con cuidado. Si usas Syspanel (recuerda, acceso por puerto 2106), muchas tareas se simplifican, como la gestión de bases de datos y la restauración de backups.

No olvides revisar los logs siempre que algo falle; son tu mejor fuente de verdad. Y si un error persiste, no dudes en buscar en foros especializados o en la documentación oficial de PrestaShop. Con práctica, te volverás un experto en mantener tu tienda online estable y rápida.

¡Espero que esta guía te haya sido útil! Si tienes más dudas, recuerda que un buen SysAdmin siempre tiene un plan de respaldo.

¿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