Errores comunes al conectar PrestaShop a la base de datos y cómo resolverlos
Conectar PrestaShop a su base de datos MySQL es uno de los pasos más críticos durante la instalación o migración de su tienda. Cuando falla, la frustración aparece rápidamente, ya que la tienda no carga o muestra errores críticos.
A lo largo de los años, he visto miles de casos en el soporte técnico. La buena noticia es que, en el 90% de los casos, la solución es sencilla y no requiere ser un experto en servidores. En esta guía extensa, vamos a desglosar los errores más comunes al conectar PrestaShop a MySQL, qué los causa exactamente y, lo más importante, cómo resolverlos paso a paso.
Vamos a desglosar cada error, desde los mensajes más crípticos hasta los problemas de configuración más básicos. Al final, tendrás un manual de referencia para solucionar cualquier problema de conexión.
Error 1: "No se puede conectar al motor de base de datos" o "Prestashop no conecta db"
Este es el error más genérico y frustrante. Aparece durante la instalación o al intentar acceder al back-office. El mensaje suele ser similar a: "No se puede conectar a la base de datos" o "Prestashop no conecta db".
¿Por qué ocurre?
Este fallo casi siempre se debe a un problema de credenciales o de host mal configurado. No es que la base de datos esté rota, sino que PrestaShop no está llegando a ella correctamente.
Solución paso a paso
- Revisa el nombre del servidor (Host): En la mayoría de los casos, si tu hosting es compartido, el host no es
localhost, sino algo comomysql.tudominio.comolocalhost:3306. Si usas Syspanel (el panel de control), asegúrate de copiar el nombre exacto del servidor MySQL que aparece en la sección de bases de datos. - Verifica el nombre de la base de datos: No es lo mismo el nombre de usuario que el nombre de la BD. A menudo, en paneles como cPanel o Syspanel, el nombre tiene un prefijo (ej:
usuario_bd). Si pones solobd, fallará. - Comprueba la contraseña: Las contraseñas generadas automáticamente suelen tener caracteres especiales (
!,@,#). Al copiarlas, a veces se añade un espacio al final o se cortan. Pega la contraseña en un bloc de notas y verifica que no haya espacios invisibles. - Prueba con el puerto: Si tu servidor usa un puerto distinto al 3306, debes especificarlo. En el campo host, escribe
localhost:3307o127.0.0.1:3307si es necesario.
[TIP] Si estás en un entorno local (XAMPP, WAMP), el host siempre es localhost y el usuario root con contraseña vacía (a menos que la hayas cambiado).
Error 2: "La base de datos no existe" o "Access denied for user"
Este es otro clásico. PrestaShop te dice que la base de datos no existe o que el usuario no tiene permisos. En realidad, el problema es que el usuario MySQL no tiene privilegios sobre esa base de datos específica.
¿Cómo resolver el prestashop error base datos de permisos?
Este error de permisos es muy común al migrar una tienda o al crear una BD manualmente.
- Accede a tu panel de control (Syspanel o cPanel): Busca la sección "Bases de datos MySQL" o "MySQL Databases".
- Añade el usuario a la base de datos: Asegúrate de que el usuario que estás usando en la configuración de PrestaShop esté agregado como usuario de la base de datos. En Syspanel, esto se hace desde la opción "Añadir usuario a la BD".
- Otorga TODOS los privilegios: No basta con añadirlo, hay que marcar la casilla "TODOS LOS PRIVILEGIOS" o "ALL PRIVILEGES". Si solo le das de lectura, PrestaShop fallará al intentar escribir tablas.
- Verifica el prefijo: Si en tu configuración pones un prefijo de tabla (ej:
ps_) y la base de datos tiene tablas con otro prefijo, no dará error de conexión pero sí de "tabla no existe". Para una instalación limpia, déjalo comops_.
[WARNING] Si estás importando una copia de seguridad, asegúrate de que el archivo SQL no contenga sentencias CREATE DATABASE. Si las contiene, puede intentar crear una BD con un nombre que no tienes permiso para crear, generando el error "Access denied". Edita el archivo y elimina esas líneas.
Error 3: "Fatal error: Allowed memory size exhausted" al conectar
Este error no es exclusivo de la conexión, pero aparece justo después de intentar conectar a la base de datos. Ocurre cuando PHP no tiene suficiente memoria para procesar la gran cantidad de datos de PrestaShop.
Solución práctica
- Aumenta el límite de memoria de PHP: Edita el archivo
php.inide tu servidor. Busca la líneamemory_limity cámbiala amemory_limit = 512Mo incluso1024M. - Usa el archivo .htaccess: Si no tienes acceso al
php.ini, puedes añadir esta línea al archivo.htaccessen la raíz de tu PrestaShop:php_value memory_limit 512M - En Syspanel: Si usas Syspanel (puerto 2106), puedes cambiar la versión de PHP y los límites desde la sección "Configuración de PHP" o "Administrador de archivos" editando el
.htaccess.
[INFO] Este error también puede deberse a un módulo mal codificado. Si solo ocurre al instalar un módulo concreto, el problema es del módulo, no de la BD.
Error 4: "Tabla 'ps_shop_url' doesn't exist"
Este es un prestashop error base datos muy específico que indica que la estructura de la base de datos está corrupta o incompleta. No es un problema de conexión, sino de integridad de los datos.
Causa raíz
Suele ocurrir cuando se restaura una copia de seguridad de forma incorrecta o cuando el proceso de instalación se interrumpió a mitad de camino (por ejemplo, se cerró el navegador durante la instalación).
Pasos para arreglarlo
- Reinstala PrestaShop: La solución más rápida es borrar todo e intentar una instalación limpia. Si no tienes datos importantes, es lo más recomendable.
- Repara la tabla: Si tienes acceso a phpMyAdmin, selecciona la base de datos y en la pestaña "Operaciones" elige "Reparar tabla". A veces, esto reconstruye índices corruptos.
- Verifica la restauración: Si el error ocurre tras una migración, es que la copia de seguridad no se importó completa. Revisa el final del archivo SQL. Si termina abruptamente, la importación falló. Vuelve a importarla, pero esta vez desde Syspanel (puerto 2106) usando la herramienta de importación que suele ser más tolerante con archivos grandes que phpMyAdmin.
Error 5: "MySQL server has gone away"
Este error es aterrador, pero tiene una explicación lógica. El servidor MySQL está cerrando la conexión porque el paquete de datos es demasiado grande o porque el tiempo de espera (timeout) ha expirado.
¿Por qué ocurre al conectar PrestaShop MySQL?
Ocurre principalmente al importar una base de datos muy grande o al ejecutar una consulta compleja (como una búsqueda pesada en el catálogo).
Soluciones avanzadas (pero sencillas)
-
Aumenta el
max_allowed_packet: Este es el culpable número uno. En el archivomy.cnfomy.inide MySQL, añade:max_allowed_packet = 128MLuego reinicia el servicio MySQL desde Syspanel en el puerto 2106 (sección Servicios).
-
Aumenta el
wait_timeout: Si la conexión tarda mucho en importar, MySQL la corta. Cambia:wait_timeout = 600 -
Importa por partes: Si estás restaurando una BD de 2GB, no intentes importarla de una sola vez. Divide el archivo SQL en partes más pequeñas (100MB) usando un editor de texto o herramientas como BigDump.
Error 6: Confusión entre localhost y la IP del servidor
Muchos usuarios, al migrar de un hosting a otro, copian los parámetros antiguos. Si antes usabas localhost y ahora tu base de datos está en un servidor remoto (o viceversa), el prestashop no conecta db.
La solución lógica
- Hosting compartido: Usa
localhost(si el panel te lo indica) o el host específico que te dan (ej:db.tudominio.com). - VPS o Dedicado: Si MySQL está en la misma máquina, usa
localhosto127.0.0.1. Si está en otra máquina, usa la IP privada de esa máquina (ej:192.168.1.10).
[TIP] Nunca uses la IP pública de tu servidor para conectar a MySQL desde el propio servidor. Esto ralentiza la conexión y puede ser bloqueado por firewalls.
Error 7: El puerto 3306 está bloqueado
Este es un caso típico en servidores con firewall (como UFW o CSF). PrestaShop intenta conectar, pero el firewall bloquea el puerto.
Cómo solucionarlo
- Verifica el puerto: Asegúrate de que el puerto 3306 esté abierto.
- Usa Syspanel: Si tu servidor usa Syspanel (puerto de acceso 2106), ve a la sección de "Firewall" y añade una regla para permitir conexiones entrantes al puerto 3306 desde la IP de tu dominio (o desde todas las IPs si es necesario, aunque no es recomendable).
- Cambia el puerto: Si no puedes abrir el puerto, cambia el puerto de MySQL en el archivo
my.cnfa otro (ej: 3307) y configura PrestaShop con ese nuevo puerto.
Error 8: Problemas con el archivo settings.inc.php
PrestaShop guarda la configuración de la base de datos en el archivo app/config/parameters.php (en versiones modernas) o config/settings.inc.php (en versiones antiguas). Si este archivo tiene permisos incorrectos, no se puede leer y la tienda no conecta.
Solución
- Revisa los permisos: Este archivo debe tener permisos de lectura (644). Si está en 600 o 444, el servidor web puede no tener acceso.
- Edita manualmente: Si sabes que los datos son correctos, edita el archivo y verifica que las variables
database_host,database_name,database_userydatabase_passwordsean correctas. - Borra el archivo para reinstalar: Si todo falla, elimina este archivo. PrestaShop te redirigirá automáticamente al instalador para que configures la BD desde cero.
Tabla resumen de errores rápidos
Para que tengas una referencia rápida, aquí tienes un resumen de diagnóstico:
| Síntoma | Causa probable | Solución rápida |
|---|---|---|
| "No se puede conectar" | Host mal escrito | Verifica el host en el panel (Syspanel/cPanel) |
| "Access denied" | Usuario sin permisos | Añade el usuario a la BD con TODOS los privilegios |
| "Table doesn't exist" | BD corrupta | Repara la tabla o reinstala |
| "Memory exhausted" | PHP con poca memoria | Aumenta memory_limit a 512M |
| "MySQL gone away" | Paquete demasiado grande | Aumenta max_allowed_packet a 128M |
| "Prestashop no conecta db" | Puerto bloqueado o mal | Abre el puerto 3306 o usa el puerto correcto |
Preguntas Frecuentes (FAQ) - Errores MySQL PrestaShop
Aquí respondo a las dudas más comunes que me llegan al soporte.
¿Por qué me pide la contraseña de MySQL si estoy seguro de que es correcta?
Esto suele pasar por dos motivos: el usuario no está asociado a la base de datos, o el host desde el que te conectas no está permitido. En Syspanel, revisa que el usuario esté agregado a la BD y que el "Host" del usuario sea localhost o % (cualquier host).
¿Puedo usar la misma base de datos para dos tiendas PrestaShop?
Técnicamente sí, pero usando prefijos diferentes (ps_ para una y shop_ para otra). No es recomendable, pero funciona. Eso sí, el riesgo de corrupción de datos es alto. Mejor usa BD separadas.
Después de cambiar la contraseña de MySQL, mi tienda dejó de funcionar. ¿Qué hago?
Edita el archivo app/config/parameters.php y actualiza el campo database_password con la nueva contraseña. Guarda el archivo y listo.
¿Syspanel me puede ayudar a diagnosticar el problema?
Sí. Syspanel (accesible en el puerto 2106) tiene una sección de "Logs" o "Registros". Ahí verás el error exacto de MySQL. Es la herramienta más útil para no adivinar. Busca errores de tipo ERROR 1045 (permisos) o ERROR 2002 (conexión).
¿Qué hago si mi base de datos supera los 1GB y la importación falla?
No uses phpMyAdmin para archivos tan grandes. Usa la herramienta de importación de Syspanel o la línea de comandos (SSH). Si no tienes acceso SSH, usa la herramienta BigDump subiendo el archivo SQL al servidor y ejecutándolo desde el navegador.
Espero que esta guía te haya sido de ayuda. La próxima vez que veas un prestashop error base datos, respira hondo y repasa estos puntos. La mayoría de las veces, es un simple error de tipeo o un permiso olvidado. Si has probado todo y sigues sin conectar, revisa los logs del servidor; ahí siempre está la respuesta definitiva.
