Prestashop: «Link to database cannot be established»

Prestashop link database

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:

<strong>Warning:</strong> mysql_connect(): Access denied for user 'cpuser_pshop'@'localhost' (using password: YES) in <strong>/home//public_html/prestashop/classes/MySQL.php</strong> 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *