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»
Contenidos
Para analizar lo que esta ocurriendo, ya que pueden ser muchas las variables proponemos los siguientes pasos:
define('_PS_MODE_DEV_', false);
define('_PS_MODE_DEV_', true);
@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.
Lo primero que deberemos hacer es verificar es que nuestro Prestashop tiene los datos de conexión a la base de datos bien configurados.
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');
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
Comparte este articulo en
¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…
Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…
La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…
No es la primera vez que me encuentro con el agotamiento de la memoria en…
Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…
Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…