Cómo corregir el error 'No se puede conectar a la base de datos' en PrestaShop
¡Hola! Si estás leyendo esto, es muy probable que hayas intentado entrar a tu tienda PrestaShop y te hayas encontrado con un mensaje bastante desagradable: "No se puede conectar a la base de datos" o "Error de conexión a la base de datos".
No te preocupes, es uno de los errores más comunes en el mundo del hosting y, en la gran mayoría de los casos, tiene una solución sencilla que no requiere que seas un experto en programación. En esta guía extensa y paso a paso, vamos a desglosar todas las causas posibles y, lo más importante, cómo solucionarlas una por una para que tu tienda vuelva a estar en línea lo antes posible.
Vamos a ello. Respira hondo, coge un café y sigue estos pasos en orden. No los saltes, ya que vamos de lo más simple a lo más complejo.
¿Qué significa exactamente este error?
Antes de ponernos manos a la obra, es importante entender qué está pasando. PrestaShop es un programa que necesita dos cosas para funcionar: los archivos (el código) y una base de datos (donde se guardan tus productos, clientes, pedidos, etc.). Cuando ves el error error conexion base datos prestashop, significa que PrestaShop ha intentado hablar con la base de datos, pero no ha recibido respuesta o la respuesta ha sido un "no".
Esto puede deberse a que la base de datos está caída, a que los datos de acceso son incorrectos o a que hay un problema de comunicación entre el servidor y la base de datos. Vamos a diagnosticarlo.
Paso 1: La regla de oro – Reiniciar el servidor de bases de datos
A veces la solución más tonta es la que funciona. Si tu hosting es de tipo VPS o dedicado (es decir, tienes control total sobre el servidor), lo primero que debes intentar es reiniciar el servicio de bases de datos (normalmente MySQL o MariaDB).
Esto es como apagar y encender tu router cuando no hay internet. Muchas veces, un proceso se ha quedado bloqueado o hay demasiadas conexiones abiertas.
¿Cómo se hace?
Si tienes acceso por SSH (terminal), escribe:
sudo systemctl restart mysql
O si tu servidor usa MariaDB:
sudo systemctl restart mariadb
[TIP]
Si no sabes qué es SSH o no tienes acceso, este paso no es para ti. Salta al Paso 2, que es más universal.
Después de reiniciar, espera 30 segundos y vuelve a intentar cargar tu tienda. Si ya funciona, ¡fantástico! Era un problema temporal. Si no, continúa con el siguiente paso.
Paso 2: Verificar los datos de acceso en el archivo de configuración
La causa más común de que prestashop no conecta base de datos es que los datos de conexión guardados en tu tienda sean incorrectos. Esto puede pasar si cambiaste la contraseña de la base de datos desde el panel de control de tu hosting o si migraste la tienda a otro servidor y olvidaste actualizar los datos.
PrestaShop guarda estos datos en un archivo llamado parameters.php que se encuentra en la carpeta app/config/ de tu instalación.
¿Cómo lo reviso?
- Accede a tu hosting mediante el Administrador de Archivos (cPanel, Syspanel, Plesk, etc.) o por FTP (FileZilla).
- Navega hasta la carpeta raíz de tu PrestaShop (normalmente
public_html/,www/otuweb.com/). - Entra en la carpeta
appy luego enconfig. - Busca el archivo
parameters.php. Haz clic derecho y selecciona "Editar" o "Ver/Editar".
Verás un código PHP con una sección que dice 'database_host', 'database_name', 'database_user' y 'database_password'. Es algo así:
'database_host' => 'localhost',
'database_name' => 'mi_usuario_bd',
'database_user' => 'mi_usuario_bd',
'database_password' => 'mi_contraseña_secreta',
Verifica esto:
database_host: Normalmente eslocalhost, pero a veces tu proveedor usa una dirección comomysql.tudominio.como una IP. Debe coincidir exactamente con lo que te dijo tu proveedor de hosting.database_name: El nombre exacto de tu base de datos.database_user: El usuario exacto de la base de datos.database_password: La contraseña exacta. ¡Ojo con las mayúsculas y minúsculas!
[WARNING]
Si has cambiado la contraseña de la base de datos recientemente, este es el lugar donde debes actualizarla. Si no la recuerdas, tendrás que cambiarla desde el panel de control de tu hosting (por ejemplo, en Syspanel o cPanel) y luego ponerla aquí.
Si has corregido algún dato, guarda el archivo y sube los cambios. Prueba de nuevo. Si el error persiste, vamos a por más.
Paso 3: Revisar el estado del servidor de bases de datos
A veces el problema no está en tu tienda, sino en el propio servidor de bases de datos. Puede que esté saturado o que haya alcanzado el límite de conexiones.
¿Cómo lo compruebo?
La forma más fácil es entrar en el panel de control de tu hosting (cPanel, Syspanel, etc.) y buscar una sección llamada "Bases de datos MySQL" o "MySQL Databases".
- En cPanel: Busca el icono de "MySQL Databases". Si puedes ver la lista de bases de datos, el servidor está activo.
- En Syspanel: Si tu hosting usa Syspanel, el acceso es por el puerto 2106 (ej:
https://tu-dominio.com:2106). Dentro, busca la sección de bases de datos.
Si no puedes entrar o ves mensajes de error, el problema es de tu proveedor de hosting. En ese caso, contacta con su soporte técnico y diles que tu base de datos no responde.
Comprobar desde SSH (más avanzado)
Si tienes acceso SSH, puedes intentar conectar manualmente a la base de datos para ver si responde:
mysql -u tu_usuario -p -h localhost
Te pedirá la contraseña. Si puedes entrar, el servidor funciona. Si te da un error como "Access denied", el usuario o la contraseña son incorrectos (vuelve al Paso 2). Si te da "Can't connect to MySQL server", el servidor está caído.
Paso 4: El puerto de conexión (un clásico olvidado)
En la mayoría de los casos, el puerto de conexión a la base de datos es el 3306. Sin embargo, algunos proveedores de hosting por seguridad usan puertos personalizados. Si tu proveedor te indicó un puerto específico, debes añadirlo al archivo parameters.php.
Busca la línea 'database_port' => '3306'. Si tu proveedor te dijo que el puerto es otro (ej: 3307, 3308), cámbialo. Si no ves esta línea, puedes añadirla justo después de 'database_host':
'database_port' => 'tu_puerto_aqui',
[INFO]
Si no estás seguro del puerto, contacta con tu proveedor de hosting. Es un dato que suelen proporcionar en la bienvenida o en el panel de control.
Paso 5: Problemas con el prefijo de las tablas
Otra causa menos común pero posible es que el prefijo de las tablas de la base de datos no coincida. Por defecto, PrestaShop usa ps_. Si has hecho una restauración desde una copia de seguridad con un prefijo diferente, la conexión fallará.
En el archivo parameters.php, busca:
'database_prefix' => 'ps_',
Asegúrate de que coincide con el prefijo real de tus tablas. Puedes comprobarlo entrando a la base de datos desde el panel de control (phpMyAdmin) y viendo cómo se llaman las tablas. Si se llaman mi_tienda_products, el prefijo es mi_tienda_.
Paso 6: Permisos del usuario de la base de datos
Imagina que el usuario de la base de datos solo tiene permiso para "leer" pero no para "escribir". PrestaShop necesita hacer ambas cosas constantemente. Si los permisos son incorrectos, dará errores de conexión o de escritura.
¿Cómo lo arreglo?
Necesitas ir a la sección de "Bases de datos MySQL" en tu panel de control.
- Busca la base de datos y el usuario que está usando PrestaShop.
- Asegúrate de que el usuario tenga TODOS LOS PRIVILEGIOS (ALL PRIVILEGES). Normalmente hay una casilla o botón para marcar "Todos los privilegios".
- Guarda los cambios.
Si usas Syspanel, el proceso es similar. Recuerda que el acceso a Syspanel es por el puerto 2106. Busca la base de datos, haz clic en "Gestionar" o "Editar" y verifica los privilegios del usuario.
Paso 7: El archivo .htaccess y los permisos de archivos
A veces, el problema no es la base de datos en sí, sino que PrestaShop no puede leer o escribir archivos de configuración. Esto puede deberse a permisos incorrectos en archivos o carpetas.
Permisos recomendados
- Carpetas (directorios): Deben tener permisos
755. - Archivos: Deben tener permisos
644.
Si algo tiene permisos 777 o 666, puede ser un riesgo de seguridad y algunos servidores bloquean la conexión.
¿Cómo lo cambio?
Desde el Administrador de Archivos de tu hosting, selecciona la carpeta raíz de PrestaShop y busca la opción "Permisos" o "Change Permissions". Aplica 755 a todas las carpetas y 644 a todos los archivos. Esto se puede hacer de forma recursiva (aplicar a todas las subcarpetas).
[WARNING]
No cambies los permisos del archivo parameters.php a 777. Déjalo en 644 o 600 si es posible. Un permiso demasiado abierto es una puerta de entrada para hackers.
Paso 8: La caché de PrestaShop (el gran enemigo invisible)
PrestaShop guarda una caché para cargar la tienda más rápido. A veces, esa caché se corrompe y causa errores extraños, incluido el de conexión a la base de datos.
¿Cómo la limpio?
La forma más fácil es desde el panel de administración, pero si no puedes entrar, tendrás que hacerlo manualmente.
- Accede a tu hosting por FTP o Administrador de Archivos.
- Navega a la carpeta
var/cache(en PrestaShop 1.7 y 1.8) ocache(en versiones antiguas). - Dentro de esa carpeta, elimina todo el contenido (archivos y carpetas). No te preocupes, PrestaShop la regenerará automáticamente.
[TIP]
Si no puedes borrar algún archivo, cámbiale el nombre (ej: dev a dev_old). Eso también fuerza la regeneración.
Paso 9: El servidor DNS y la conexión a localhost
En casos muy específicos, el problema puede ser que tu servidor no pueda resolver el nombre localhost. Esto es raro, pero pasa.
Solución:
En el archivo parameters.php, cambia 'database_host' => 'localhost' por 'database_host' => '127.0.0.1'.
La dirección 127.0.0.1 es la IP universal de localhost. Esto a veces soluciona conflictos de configuración del servidor.
Paso 10: Revisar los logs del servidor (para los más atrevidos)
Si has llegado hasta aquí y nada funciona, es hora de mirar los registros de errores del servidor. Ahí se esconden pistas valiosas.
¿Dónde están?
- En cPanel: Busca la sección "Errores" o "Logs" y luego "Error Log".
- En Syspanel: Dentro de la sección de archivos o logs, busca un archivo llamado
error_logen la raíz de tu tienda.
Abre ese archivo y busca las últimas líneas. Puede que veas mensajes como:
Access denied for user 'user'@'localhost'-> Problema de contraseña o usuario.Connection refused-> El servidor de BD no está escuchando en ese puerto.Too many connections-> Hay demasiadas conexiones a la BD.
Estos mensajes te darán la pista exacta para saber qué dirección tomar.
Preguntas Frecuentes (FAQ) sobre el error de conexión a BD en PrestaShop
Aquí tienes un resumen rápido de las dudas más comunes que resuelven este tipo de problemas:
¿Por qué me sale este error después de cambiar la contraseña de mi hosting?
Porque PrestaShop guarda la contraseña antigua en parameters.php. Debes actualizarla en ese archivo (Paso 2) o cambiar la contraseña de la BD para que coincida.
He migrado mi tienda a un nuevo hosting y ahora da este error. ¿Qué hago?
Revisa que el archivo parameters.php tenga los datos del nuevo servidor, no los del antiguo. Especialmente el database_host (puede que ya no sea localhost) y el database_name y database_user (suelen tener prefijos del nuevo hosting).
¿Puede ser un problema de mi conexión a internet?
No. Este error ocurre en el servidor. Tu conexión a internet solo afecta a si ves la página o no, pero no a la conexión interna del servidor con su base de datos.
¿Qué hago si nada de esto funciona?
Contacta con tu proveedor de hosting. Diles que has verificado los datos en parameters.php, que has limpiado la caché y que el servidor de BD no responde. Ellos tienen acceso a cosas que tú no, como la configuración del firewall o el estado físico del servidor.
[INFO]
Si tu hosting es gestionado, la mayoría de estos pasos deberían ser realizados por el soporte técnico. No dudes en abrir un ticket desde el panel de control (recuerda, si es Syspanel, el puerto es el 2106).
Con esto, has cubierto el 99% de las causas posibles de este error. Espero que este artículo extenso te haya sido de gran ayuda y que tu tienda vuelva a estar operativa. Recuerda siempre hacer una copia de seguridad del archivo parameters.php antes de editarlo, por si acaso. ¡Mucha suerte!
