Cómo solucionar el error 'PrestaShop no puede conectarse a la base de datos'
¡Hola! Si estás leyendo esto, es muy probable que te hayas encontrado con un mensaje frustrante en tu tienda online: "PrestaShop no puede conectarse a la base de datos" o algo similar como "Link to database cannot be established".
No te preocupes, es uno de los errores más comunes en el mundo del comercio electrónico y, en el 90% de los casos, tiene una solución sencilla que no requiere que seas un experto en informática. En esta guía extensa y paso a paso, vamos a desglosar la solución error base datos PrestaShop desde cero, explicando cada concepto como si fuera la primera vez que lo ves.
Vamos a arreglar esa PrestaShop conexión fallida juntos. Respira hondo, coge un café y sigue estos pasos en orden. No te saltes ninguno, porque vamos de lo más simple a lo más complejo.
¿Por qué ocurre el error "PrestaShop no conecta MySQL"?
Antes de lanzarnos a arreglar nada, es fundamental entender qué significa este mensaje. Piensa en tu tienda PrestaShop como una casa. Los archivos de la tienda (las paredes, el tejado) están en un servidor, pero los muebles, los precios, los clientes y los pedidos (toda la información) están en un almacén separado llamado Base de Datos (normalmente MySQL o MariaDB).
Cuando tu tienda intenta abrir la puerta de ese almacén para coger los datos, necesita una llave muy concreta. Esa llave está formada por cuatro datos: el nombre de la base de datos, el usuario, la contraseña y la dirección del servidor (host). El error de conexión base datos PrestaShop aparece cuando la llave no abre la puerta, es decir, cuando hay una discrepancia entre esos datos o el servidor de base de datos está caído o bloqueado.
Paso 1: Verifica que el servidor de base de datos esté activo
A veces la solución es más tonta de lo que parece. Imagina que el almacén está cerrado por vacaciones. No importa que tengas la llave perfecta; no podrás entrar.
¿Cómo comprobar si MySQL/MariaDB está funcionando?
Si tu tienda está en un hosting compartido, este paso no lo puedes hacer tú, pero puedes contactar con tu proveedor. Si tienes un VPS o un servidor dedicado (o un panel como Syspanel, cuyo acceso es a través del puerto 2106), puedes hacerlo fácilmente:
- Accede a tu panel de control (por ejemplo, Syspanel en el puerto 2106).
- Busca la sección de "Servicios" o "Estado del servidor".
- Localiza el servicio de MySQL o MariaDB.
- Si está en rojo o parado, haz clic en "Iniciar" o "Reiniciar".
[WARNING] Si acabas de reiniciar el servidor de base de datos, espera 30 segundos antes de intentar acceder a tu tienda de nuevo. A veces tarda un poco en arrancar completamente.
Paso 2: Localiza el archivo de configuración (parameters.php)
Si el servidor está activo, el problema es que la "llave" que tiene PrestaShop no coincide con la cerradura. PrestaShop guarda esta llave en un archivo muy específico llamado parameters.php. Es el corazón de la configuración de tu tienda.
¿Dónde está este archivo?
Debes buscarlo en la carpeta raíz de tu instalación de PrestaShop, dentro de la subcarpeta app/config/.
La ruta típica sería: /public_html/app/config/parameters.php (o la ruta que tengas definida para tu web).
¿Cómo editarlo de forma segura?
Necesitas un editor de texto plano (como el Bloc de notas de Windows o TextEdit en Mac, pero nunca Word). Lo mejor es usar el "Administrador de Archivos" de tu panel de hosting o de Syspanel (puerto 2106).
- Navega hasta la carpeta
app/config. - Busca
parameters.php. - Haz clic derecho y selecciona "Editar" o "Edit".
Verás un código PHP con una estructura similar a esta:
return array (
'parameters' => array (
'database_host' => 'localhost',
'database_port' => '',
'database_name' => 'tu_basededatos',
'database_user' => 'tu_usuario',
'database_password' => 'tu_contraseña',
'database_prefix' => 'ps_',
// ... más parámetros
),
);
Aquí es donde vamos a trabajar. No toques nada más que estas líneas.
Paso 3: Comprueba los datos de conexión (Host, Usuario y Contraseña)
Este es el paso más crítico. Un simple cambio de contraseña en tu hosting puede provocar una PrestaShop conexión fallida al instante.
El Host (database_host)
- El valor más común es
localhosto127.0.0.1. Esto significa que la base de datos está en el mismo servidor que tu tienda. - Sin embargo, algunos hostings usan direcciones externas como
mysql.tudominio.comodb.servidorhosting.com. - Verifica esto en el panel de tu proveedor de hosting. Si tienes dudas, contacta con ellos. Cambiar esto sin saberlo puede romper la web.
El Usuario y la Contraseña (database_user y database_password)
- Asegúrate de que la contraseña no tenga espacios al principio o al final. Es un error muy común al copiar y pegar.
- Comprueba que el usuario es exactamente el mismo que creaste, a veces los hostings añaden un prefijo (ej:
usuario_bden lugar debd). - Si has cambiado la contraseña de tu base de datos recientemente, este archivo seguirá teniendo la anterior. Actualízala aquí.
[TIP] Si no recuerdas la contraseña, muchos paneles de control te permiten "Restablecer" o "Cambiar" la contraseña de la base de datos. Una vez la cambies en el panel, cópiala y pégala inmediatamente en este archivo parameters.php. Guarda los cambios.
Paso 4: El archivo parameters.php está corrupto o vacío
A veces, el archivo se corrompe durante una actualización o una copia de seguridad. Si el archivo está vacío o incompleto, PrestaShop no podrá leer los datos.
Solución: Restaurar desde una copia de seguridad
- En la misma carpeta
app/config, busca un archivo llamadoparameters.php.bako similar. - Si existe, descárgalo a tu ordenador.
- Renombra el archivo
parameters.phpactual aparameters.php.old(por si acaso). - Sube el archivo
.baky renómbralo aparameters.php. - Intenta abrir tu tienda.
[INFO] Si no tienes un .bak, puedes crear un archivo parameters.php nuevo desde cero, pero necesitas saber los datos exactos de tu base de datos. Si no los tienes, contacta con tu soporte técnico antes de hacer esto, ya que podrías perder la configuración.
Paso 5: Problemas con el prefijo de la base de datos
Este es un error menos común pero muy confuso. En el archivo parameters.php, verás la línea 'database_prefix' => 'ps_'.
- Este prefijo es como una etiqueta que identifica las tablas de PrestaShop dentro de la base de datos.
- Si por error has cambiado este valor, o si tu base de datos usa un prefijo diferente (como
shop_), PrestaShop no encontrará sus tablas y te dará el error.
¿Cómo comprobarlo?
- Ve a tu panel de control de la base de datos (phpMyAdmin, por ejemplo).
- Abre la base de datos que usa tu tienda.
- Mira el nombre de las tablas. ¿Empiezan por
ps_? ¿O porprestashop_? - El nombre del prefijo es todo lo que está antes del nombre descriptivo (ej:
ps_product-> prefijops_).
Si no coincide, cámbialo en el archivo parameters.php. Generalmente, el prefijo por defecto es ps_.
Paso 6: Verifica el puerto de conexión (database_port)
Aunque normalmente está vacío, a veces el servidor de base de datos no usa el puerto estándar (3306). Si tu proveedor usa un puerto distinto por seguridad, debes especificarlo.
- Si en tu hosting te dan un dato como
mysql.tudominio.com:3307, debes separarlo. - En
database_hostpondríasmysql.tudominio.com. - En
database_portpondrías3307.
Dejar el puerto vacío significa que usará el puerto por defecto (3306). No lo rellenes con números aleatorios si no estás seguro.
Paso 7: El error persiste. ¿Y ahora? (Modo Mantenimiento y Debug)
Si has llegado hasta aquí y el error de conexión base datos PrestaShop sigue, necesitamos ver más detalles del error para saber exactamente qué falla.
Activar el modo debug de PrestaShop
Esto nos dará un mensaje de error más específico en lugar de la pantalla genérica.
- Abre el archivo
config/defines.inc.phpen la raíz de tu instalación. - Busca la línea:
define('_PS_MODE_DEV_', false); - Cámbiala a:
define('_PS_MODE_DEV_', true); - Guarda el archivo y recarga tu tienda.
Ahora verás un error más técnico, como por ejemplo:
- Access denied for user 'usuario'@'localhost' -> Esto significa que el usuario o la contraseña son incorrectos.
- Unknown database 'nombre_bd' -> El nombre de la base de datos que pusiste no existe.
- Connection refused -> El host o el puerto son incorrectos, o el servidor de BD bloquea tu IP.
[WARNING] Recuerda volver a poner _PS_MODE_DEV_ en false cuando termines de solucionar el problema, por seguridad.
Paso 8: Solución avanzada: Forzar la conexión con un script PHP
Si el modo debug no te da pistas claras, podemos crear un pequeño script de prueba para aislar el problema. Esto nos dirá si los datos de conexión son válidos fuera de PrestaShop.
- Crea un archivo de texto llamado
test_conexion.php. - Pégalo dentro de la carpeta raíz de tu tienda (donde está
index.php). - Edita el archivo con el siguiente código, reemplazando los valores con los de tu
parameters.php:
<?php
$host = 'localhost'; // Reemplaza con tu database_host
$user = 'tu_usuario'; // Reemplaza con tu database_user
$pass = 'tu_contraseña'; // Reemplaza con tu database_password
$db = 'tu_basededatos'; // Reemplaza con tu database_name
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_errno) {
echo "Fallo al conectar: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} else {
echo "Conexión exitosa a la base de datos.";
$mysqli->close();
}
?>
- Guarda el archivo y accede a él desde tu navegador:
www.tudominio.com/test_conexion.php.
- Si ves "Conexión exitosa": El problema está en la configuración de PrestaShop, no en los datos. Revisa el paso 5 (prefijo) o considera que el archivo
parameters.phpno se está leyendo correctamente (permisos de archivo). - Si ves "Fallo al conectar": El problema está en los datos que has puesto. El mensaje te dirá si es el usuario, la contraseña o el host.
[TIP] Después de la prueba, ELIMINA el archivo test_conexion.php de tu servidor. Dejarlo es un riesgo de seguridad grave.
Paso 9: Los permisos de archivo (CHMOD)
En servidores Linux, los archivos tienen permisos. Si el archivo parameters.php tiene permisos demasiado restrictivos, PrestaShop no podrá leerlo (o PHP no podrá acceder).
- El archivo
parameters.phpdebe tener permisos 644 (lectura y escritura para el propietario, lectura para el grupo y otros). - Las carpetas deben tener permisos 755.
Puedes cambiar esto desde el Administrador de Archivos de tu hosting o Syspanel (puerto 2106), haciendo clic derecho sobre el archivo y seleccionando "Permisos" o "CHMOD".
Paso 10: ¿Has movido tu tienda de servidor?
Si has cambiado de hosting recientemente y ahora te sale este error, es muy probable que haya un problema con los "hosts" de la base de datos.
- A veces, el nuevo hosting tiene un host de base de datos diferente al antiguo (ej:
localhostvsmysql.nuevoserver.com). - Si importaste la base de datos desde el antiguo hosting, puede que las tablas tengan configuraciones internas que apunten a la URL antigua, pero eso no causa este error específico de conexión.
Sin embargo, si estás en un hosting como Syspanel, asegúrate de que la base de datos que creaste en el nuevo panel es la que has importado y que el usuario tiene todos los privilegios sobre esa base de datos.
Preguntas Frecuentes (FAQ) sobre el error de conexión
Aquí tienes una recopilación de dudas rápidas que suelen tener los usuarios.
¿Por qué aparece el error después de una actualización de PrestaShop?
Las actualizaciones a veces modifican el archivo parameters.php o los requisitos de conexión (por ejemplo, piden una versión más nueva de MySQL). Si tu hosting no cumple los requisitos, fallará la conexión.
¿El error puede deberse a un ataque de fuerza bruta?
Sí. Si tu servidor de base de datos tiene protección contra ataques de fuerza bruta (como Fail2ban), es posible que tu IP esté bloqueada temporalmente. Esto es más común en VPS. Espera 15 minutos o contacta con tu proveedor.
¿Debo cambiar algo en el archivo .htaccess?
No, el archivo .htaccess no tiene relación directa con la conexión a la base de datos. Se usa para URLs amigables y redirecciones.
¿Qué hago si nada de esto funciona?
Si has seguido todos los pasos y la solución error base datos PrestaShop no se ha materializado, es hora de contactar con tu proveedor de hosting. Diles el mensaje exacto que te aparece en el modo debug. Ellos pueden verificar los logs del servidor de base de datos para ver los intentos de conexión fallidos y ayudarte a desbloquear el problema.
Consejo final y resumen
La PrestaShop conexión fallida es un dolor de cabeza, pero es solucionable. La clave está en la paciencia y en verificar los datos uno por uno.
Recuerda el orden lógico:
- ¿El servidor de BD está encendido?
- ¿Los datos en
parameters.phpson los correctos? - ¿Hay un prefijo o puerto incorrecto?
- ¿El archivo está corrupto?
- ¿Los permisos son los adecuados?
Esperamos que esta guía te haya sido de gran ayuda. Si has llegado hasta aquí, ya tienes todas las herramientas para diagnosticar y arreglar el problema. No te desanimes; incluso los desarrolladores más experimentados se encuentran con esto. ¡Ánimo y a por esas ventas!
