Software

Prestashop: «Link to database cannot be established»

El escenario, es el típico de una migración de Prestahop desde un hosting a otro. El técnico o cliente, procedente de otro hosting, ha preferido migrar por si mismo el contenido, desde el proveedor antiguo, al nuestro, siguiendo correctamente los pasos, como en nuestro tutorial Como mover Prestahop a otra cuenta de hosting, dejando la mismo tiempo que el sistema funcione en el servidor antiguo (1). Sin embargo, tras una verificación la ventana de su navegador le muestra el fatídico mensaje: «Link to database cannot be established»

 

Análisis de problemas relativos a la conexión de la base de datos de Prestashop

Proceso de análisis

Para analizar lo que esta ocurriendo, ya que pueden ser muchas las variables proponemos los siguientes pasos:

Configuración del modo debug de Prestashop

PrestaShop 1.5.3 a 1.6
    • Editamos el fichero config/defines.inc.php
    • Cambiamos false por true los siguientes valores:
define('_PS_MODE_DEV_', false);
define('_PS_MODE_DEV_', true);
PrestaShop 1.4 a 1.5.3
    • Editamos el fichero config/config.inc.php
    • Modificamos los siguientes valores:
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', true);

A partir de ahora, Prestashop nos mostrará más información sobre el o los problema/s.

En el caso que nos ocupa el mensaje es el siguiente:

Warning: mysql_connect(): Access denied for user 'cpuser_pshop'@'localhost' (using password: YES) in /home//public_html/prestashop/classes/MySQL.php on line 34  Link to database cannot be established.
  • Use Google copiando el mensaje de error, añadiendo al principio de la búsqueda «Prestashop«. Un bueno truco consiste en eliminar del mensaje mostrado aquellas partes que se notan que son internas (paths (directorios), nombre de servidor, nombres de usuario, …) que no van a producir información relevante y van a ofuscar nuestra búsqueda. Las búsquedas deben hacerse de la forma mas fácil, y ir dificultándolas a medida que no encontramos solución, por exceso de datos devueltos.
  • Una vez finalizado, y solucionado el problema no olvide, volver a dejar el sistema sin el modo debug activado.

Verificación de los datos de conexión a la base de datos de Prestashop

Lo primero que deberemos hacer es verificar es que nuestro Prestashop tiene los datos de conexión a la base de datos bien configurados.

    • Verificación de los datos del fichero config/settings.inc.php
define('_DB_NAME_', 'cpuser_prestashop1_1');
define('_MYSQL_ENGINE_', 'InnoDB');
define('_DB_SERVER_', 'dominios.tld');
define('_DB_USER_', 'cpuser_pshop');
define('_DB_PREFIX_', 'prefijo_');
define('_DB_PASSWD_', 'MKq·$Dz-#8{');
define('_DB_TYPE_', 'MySQL');
  • Tratamos de acceder con esos datos a nuestra base de datos, mediante phpMyAdmin, o shell. En el caso de Cpanel, no servirá phpMyAdmin pues el acceso se hace mediante el usuario de Cpanel. La mejor manera es una comprobación en el shell, pero tu proveedor de hosting debe permitirte el acceso SSH, algo no muy usual en la mayoría de los empresas de alojamiento de páginas web.
    Planes de hosting con SSH activado
    En Castris si te permitimos el acceso por SSH (Consulta nuestros planes) para algunos planes premium
  • Si no podemos verificar, el acceso a mediante shell o phpMyAdmin, verificaremos que el usuario, tiene la contraseña y los permisos asignados en nuestro panel de control.

Si una vez realizadas las verificaciones persiste el problema, entonces es que algo se nos escapa. ¿Qué puede ser?

Entre otras cosas, estas migrando un sitio de un servidor a otro, y tu configuración contiene una llamada al servidor MySQL diferente a localhost:

define('_DB_SERVER_', 'dominios.tld');

Por tanto, pese a que tu este visualizando el sito nuevo, el intenta conectarse a la base de datos, del sitio actual o en producción, que probablemente tiene distinto user y/o password.

Para evitar esto deberemos cambiar el valor de la linea a localhost(2)

define('_DB_SERVER_', 'localhost');

 

(1) La mejor manera de operar con migraciones, es realizarlas de forma que los contenidos de producción, y el de la nueva ubicación (valido también para entornos de desarrollo-producción) se prueben de manera real, sin el uso de alternativas como el uso de la dirección url basada en el usuario de Apache servidor.tld/~user/. Para ello puede utilizar tips como la modificación del fichero hosts de su sistema operativo, o el uso de plugin y complementos para su navegador, que le permitirán pasar de un entorno a otro.

(2) En un entorno de desarrollo-producción lo ideal es que las bases de datos y el usuario sean el mismo, y que las versiones de Apache+PHP sean las mismas y tengan los mismo módulos que use Prestashop o nuestro software.


Imagen Polygonal background with wavy shapes Designed – Freepik design byHarryArts

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Comparte este articulo en

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Youtube – Mod Security en DirectAdmin. Conocerlo y gestionarlo en el panel de control DirectAdmin.

¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…

3 meses hace

Apertura del canal Youtube, Tecno Boomer, dedicado al mundo del hosting

Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…

3 meses hace

El Uso de la Lista UCEPROTECT en los Niveles 2 y 3: Una Falacia de Causa Cuestionable

La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…

4 meses hace

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

11 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

1 año hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

1 año hace