Prestashop

Hace un par de días intenté actualizar un prestashop de la versión 1.6.0.5 a la versión 1.6.1.5 mediante el módulo de “1-click upgrade” pero la actualización no salió como esperaba, la base de datos no se actualizó bien y por lo tanto el prestashop empezó a reventar por todos lados,volví sobre el backup que tenia y lo intenté de nuevo con el mismo resultado, así que estos son los pasos que seguí para solucionarlo:

  • Activé los errores en mi prestashop para que me fuera diciendo qué le faltaba, para ello me fuí a la carpeta config y edité el archivo defines.inc.php y en la linea

                        if (!defined(‘_PS_MODE_DEV_’)) define(‘_PS_MODE_DEV_’, false); la cambié por

                       if (!defined(‘_PS_MODE_DEV_’)) define(‘_PS_MODE_DEV_’, true);

De esta manera cuando reventaba me decía qué tabla o columna no encontraba.

  • Hice una instalación desde cero en otro directorio de prestashop de la versión 1.6.1.5 para poder ver su base de datos y así poder exportar las tablas que no tenia mi prestashop.
  • Conforme me iba dando errores de que faltaban tablas o columnas iba añadiendolas. Las tablas las exporté del prestashop que instalé de cero de la versión 1.6.1.5
  • Cuando acabé iba todo genial, solo faltaban las imágenes que salian todas con una interrogación a pesar de que las imágenes sí estaban, así que seguí este interesante tutorial que da varias soluciones, pero no hubo suerte. Al final me di cuenta de que la columna añadida, id_producto a la tabla ps_image_shop tenia que relacionar las imagenes con los productos, así que me creé un pequeño script donde coge los datos de la tabla ps_image que ya los tiene relacionados y los copia a la tabla ps_image_shop, si teneis pocos productos no hay problema porque podeis subir las imagenes de cada producto una por una pero cuando teneis más de 1000 productos como en mi caso es mejor utilizareste script que te lo hace solo.

<?php

if (!($link=mysql_connect(“mysql_host”, “mysql_user”, “mysql_password”))){
echo “Error conectando a la base de datos.”;
exit();
}
if (!mysql_select_db(“my_database”,$link)){
echo “Error seleccionando la base de datos.”;
exit();
}

@mysql_query(“SET NAMES ‘utf8′”,$link);

$consulta_id_images=mysql_query(“SELECT id_image FROM ps_image_shop”);

while($fila_id_images=mysql_fetch_assoc($consulta_id_images)){
$id_imag=$fila_id_images[‘id_image’];
$consulta_id_producto=mysql_fetch_assoc(mysql_query(“SELECT id_product FROM ps_image WHERE id_image=’$id_imag'”));
$id_produc=$consulta_id_producto[‘id_product’];
$modificar=mysql_query(“UPDATE ps_image_shop SET id_product='”.$id_produc.”‘ WHERE id_image='”.$id_imag.”‘”);
}
?>

Si teneis php7, tendreis que cambiar las consultas de mysql a mysqli.

Solo teneís que copiarlo en un txt darle cualquier nombre con la extensión .php, subirlo a vuesto servidor por FTP y ejecutarlo. Después ya lo podeís borrar, de echo es recomendable que lo borreis puesto que una vez ejecutado ya os tienen que salir las imágenes y el archivo no siver para nada.

 

Espero que os sirva de ayuda a los que tengais el mismo problema.

 

abril 20, 2016
prestashop-logotype

Error al actualizar prestashop a la 1.6.1.4 y 1.6.1.5

Hace un par de días intenté actualizar un prestashop de la versión 1.6.0.5 a la versión 1.6.1.5 mediante el módulo de “1-click upgrade” pero la actualización […]