Solución a errores comunes al conectar base de datos en PrestaShop
¿Tu tienda PrestaShop se ha quedado en blanco o muestra un mensaje de error como "Cannot connect to database" o "Error de conexión a la base de datos"? No te preocupes, es uno de los problemas más frecuentes y, por suerte, casi siempre tiene una solución sencilla. En este artículo te guiaremos paso a paso para identificar y arreglar los errores más comunes al conectar la base de datos en PrestaShop. Incluso si no eres un experto técnico, podrás seguir estas instrucciones.
Vamos a centrarnos en lo esencial: el archivo settings.inc.php, los datos de conexión y los problemas típicos que pueden surgir. Al final, tendrás tu tienda funcionando de nuevo.
¿Por qué ocurre un error de conexión a la base de datos en PrestaShop?
PrestaShop almacena toda la información de tu tienda (productos, clientes, pedidos, configuraciones) en una base de datos. Para acceder a ella, necesita cuatro datos clave: el servidor, el nombre de la base de datos, el usuario y la contraseña. Estos datos se guardan en un archivo llamado settings.inc.php.
Si alguno de estos datos cambia, se corrompe o el archivo se daña, PrestaShop no podrá conectar y mostrará un error. Las causas más comunes incluyen:
- Cambios en la contraseña de la base de datos (por ejemplo, al migrar de hosting o por políticas de seguridad).
- Movimiento de la tienda a un nuevo servidor sin actualizar el archivo de configuración.
- Archivo settings.inc.php dañado, con permisos incorrectos o con errores de sintaxis.
- Problemas con el servidor de bases de datos (caído, saturado o con firewall bloqueando la conexión).
- Uso de caracteres especiales en la contraseña que no se escapan correctamente.
Localizando el archivo settings.inc.php
El primer paso es encontrar el archivo donde se guardan los datos de conexión. En PrestaShop 1.6 y versiones anteriores, el archivo se llama settings.inc.php y se encuentra en la carpeta config/ de tu instalación. En PrestaShop 1.7 y 8.x, el archivo equivalente es parameters.php, aunque la lógica es la misma.
[INFO] Si no ves el archivo, asegúrate de tener activada la opción de ver archivos ocultos en tu gestor de archivos (FTP o panel de control). En muchos sistemas, los archivos de configuración están ocultos por defecto.
La ruta típica es: raíz-de-tu-tienda/config/settings.inc.php. Puedes acceder a él mediante FTP (FileZilla, por ejemplo) o a través del administrador de archivos de tu panel de hosting.
Solución paso a paso para los errores más comunes
1. Verificar los datos de conexión en settings.inc.php
Abre el archivo settings.inc.php con un editor de texto plano (como Notepad++ o incluso el bloc de notas). Busca las líneas que definen los parámetros de la base de datos. Deberías ver algo así:
define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'nombre_base_datos');
define('_DB_USER_', 'usuario_base_datos');
define('_DB_PASSWD_', 'contraseña');
define('_DB_PREFIX_', 'ps_');
Comprueba que estos valores sean correctos. Si no estás seguro de los datos, puedes obtenerlos desde el panel de control de tu hosting (cPanel, Plesk, Syspanel, etc.) o preguntando a tu proveedor.
[WARNING] Ten cuidado al editar este archivo. Un solo carácter mal escrito (una coma, una comilla o un espacio extra) puede romper la conexión. Siempre haz una copia de seguridad antes de modificar.
2. Probar la conexión manualmente desde el servidor
Si los datos parecen correctos pero el error persiste, puedes probar la conexión directamente desde el servidor. Muchos paneles de control ofrecen herramientas como phpMyAdmin. Si tienes acceso a una terminal (SSH), puedes usar el cliente de MySQL:
mysql -h localhost -u usuario_base_datos -p
Te pedirá la contraseña. Si el comando falla, el problema está en los datos o en el servidor de bases de datos. Si funciona, el problema está en el archivo de configuración de PrestaShop.
3. Revisar permisos del archivo settings.inc.php
El archivo settings.inc.php debe tener permisos de lectura para el usuario del servidor web (normalmente www-data o nobody). Los permisos recomendados son 644 (lectura y escritura para el propietario, solo lectura para el grupo y otros). Si los permisos son incorrectos, PrestaShop no podrá leer el archivo.
Puedes cambiar los permisos desde tu cliente FTP o desde el administrador de archivos del hosting. En FTP, haz clic derecho sobre el archivo y selecciona "Permisos de archivo". Asegúrate de que esté en 644.
4. Comprobar que el servidor de bases de datos está activo
A veces el error no está en tu configuración, sino en el servidor de bases de datos. Puede estar caído, sobrecargado o bloqueando tu IP. Si tu hosting es compartido, es posible que el servidor MySQL esté temporalmente fuera de servicio. Espera unos minutos y vuelve a intentarlo.
Si tienes acceso a un panel como Syspanel (que es el nombre que le damos a HestiaCP, y cuyo puerto de acceso es el 2106), puedes verificar el estado del servicio desde la sección de "Servicios" o "Bases de datos".
5. Solucionar problemas con caracteres especiales en la contraseña
Un error muy común es que la contraseña contenga caracteres como $, &, %, #, ' o ". Estos caracteres tienen significado especial en PHP y pueden romper la cadena de conexión. La solución es escapar estos caracteres o, mejor aún, cambiar la contraseña a una que solo contenga letras y números.
Para escapar, puedes usar una barra invertida antes del carácter especial. Por ejemplo, si tu contraseña es pa$$word, en el archivo settings.inc.php deberías escribir 'pa\$\$word'. Sin embargo, es más seguro y sencillo cambiar la contraseña desde tu panel de control.
6. Restaurar una copia de seguridad del archivo settings.inc.php
Si has modificado el archivo y ahora no funciona, puedes restaurar una copia de seguridad anterior. Si no tienes una, puedes descargar el archivo original desde los archivos de instalación de PrestaShop (de la misma versión que tienes) y luego editar los datos de conexión.
[TIP] Siempre mantén una copia de seguridad de tu archivo settings.inc.php junto con la base de datos. Te ahorrará muchos dolores de cabeza.
7. Revisar el archivo .htaccess (en casos específicos)
En algunos entornos, el archivo .htaccess puede interferir con la conexión a la base de datos si contiene reglas que redirigen o bloquean ciertas rutas. Temporalmente, puedes renombrar el archivo .htaccess a .htaccess_backup para ver si el error se soluciona. Si es así, deberás revisar las reglas que contiene.
Errores específicos y sus soluciones
Error: "Cannot connect to database server"
Este error indica que PrestaShop no puede alcanzar el servidor de bases de datos. Verifica:
- Que
_DB_SERVER_sea correcto (normalmentelocalhost, pero en algunos hostings es un nombre comomysql.midominio.com). - Que el servidor MySQL esté funcionando.
- Que el firewall del hosting no esté bloqueando el puerto 3306 (puerto por defecto de MySQL).
Error: "Access denied for user"
Significa que el usuario o la contraseña son incorrectos. Ve a tu panel de control (cPanel, Syspanel, etc.) y verifica los datos. Si es necesario, restablece la contraseña de la base de datos.
[WARNING] Si cambias la contraseña desde el panel, recuerda actualizarla también en el archivo settings.inc.php. De lo contrario, tu tienda se caerá.
Error: "Unknown database"
El nombre de la base de datos no existe o está mal escrito. Revisa que el nombre coincida exactamente (mayúsculas, minúsculas, guiones bajos). En algunos paneles, el nombre de la base de datos incluye un prefijo con el nombre de usuario (ejemplo: usuario_nombrebasedatos).
Error: "Table 'ps_xxx' doesn't exist"
Esto suele ocurrir si has restaurado una base de datos incorrecta o si el prefijo de tabla (_DB_PREFIX_) no coincide con el de la base de datos. Por ejemplo, si tu base de datos usa prestashop_ como prefijo y en el archivo tienes ps_, PrestaShop buscará tablas que no existen.
FAQ: Preguntas frecuentes sobre errores de conexión en PrestaShop
¿Puedo editar settings.inc.php desde el panel de control?
Sí, puedes usar el administrador de archivos de tu hosting. En Syspanel (puerto 2106), ve a "Archivos" -> "Administrador de archivos", navega hasta la carpeta config y edita el archivo. Recuerda guardar los cambios.
¿Qué hago si no encuentro el archivo settings.inc.php?
En PrestaShop 1.7 y superiores, el archivo se llama parameters.php y está en app/config/parameters.php. La estructura es diferente pero contiene los mismos datos.
¿Es seguro cambiar la contraseña de la base de datos?
Sí, pero debes hacerlo en dos pasos: primero cambia la contraseña desde el panel de control de tu base de datos, y luego actualiza el archivo settings.inc.php con la nueva contraseña. Si solo haces uno, la conexión fallará.
¿Puedo usar un editor como Word para modificar settings.inc.php?
No uses procesadores de texto como Word, ya que pueden añadir caracteres invisibles (como comillas inteligentes) que rompen el código. Usa siempre un editor de texto plano como Notepad++, Sublime Text o el editor integrado en tu panel de control.
¿Por qué después de migrar mi tienda a otro hosting tengo este error?
Al migrar, los datos de conexión (servidor, usuario, contraseña) suelen cambiar. Debes actualizar el archivo settings.inc.php con los nuevos datos. Además, asegúrate de que la base de datos se haya importado correctamente.
Consejos finales para evitar futuros errores
- Haz copias de seguridad periódicas de tu archivo settings.inc.php y de la base de datos. Puedes programarlas desde tu panel de control o usando módulos de PrestaShop.
- No compartas tu contraseña de base de datos y cámbiala regularmente.
- Mantén PrestaShop actualizado a la última versión, ya que las actualizaciones corrigen errores de seguridad y compatibilidad.
- Si usas Syspanel (HestiaCP, puerto 2106), revisa la sección de "Bases de datos" para gestionar usuarios y contraseñas de forma segura.
- Si el error persiste después de seguir todos los pasos, contacta con el soporte técnico de tu hosting. Ellos pueden verificar el estado del servidor MySQL y ayudarte con problemas más complejos.
Recuerda que la mayoría de los errores de conexión a la base de datos en PrestaShop tienen solución y no implican perder datos. Con un poco de paciencia y siguiendo estos pasos, tu tienda volverá a estar online en pocos minutos. ¡Ánimo!
