Trasladarse desde P...
 
Avisos
Vaciar todo

Trasladarse desde Prestashop 1.6 a Prestashop 9

12 Respuestas
3 Usuarios
0 Reactions
50 Visitas
Respuestas: 108
Estimable Member
Topic starter
 

Buenos días.

Acudo a vosotros en busca de ayuda, ya que, estoy hecho un buen lio.

Tengo un prestashop 1.6.X.X desde hace muchos años y me he lanzado a actualizar a Prestashop 9 (la versión estable mas moderna).

He investigado mucho y estoy haciendo una instalación manual en un Subdominio de pruebas, ejemplo: dominio.es/presta9.

 

Ya tengo creado el prestashop 9 y funciona bien, pero ahora llega el problema.

Quiero importar los productos (con sus detalles y sus IMAGENES, no hace falta las categorias). He conseguido con consulta SQL exportar un CSV (porque no se puede importar bases de datos porque las estructuras son diferentes).

En el CSV he sacado nombres, descripción, precios, e imágenes (lo justo).

 

El problema está en las imágenes. He exportado la ruta de id de la imagen que es la que he podido sacar, pero NO la ruta donde se encuentra la imagen dentro del servidor, por lo que, el resultado es una importación de productos SIN IMAGENES (porque la ruta no es correcta, no apunta a la dirección exacta donde está la imagen físicamente).

Ejemplo1: Rutas en CSV producto con id 73 >>> /img/p/7/3/yyy.jpg

Ejemplo2: Rutas en CSV producto con id 752 >>> /img/p/7/5/2/zzz.jpg

Ejemplo1 ruta en servidor real: /img/p/1/7/3/yyy.jpg

Ejemplo2 ruta en servidor real: /img/p/8/0/1/1/2/yyy.jpg

 

Como se puede ver en los ejemplos que he puesto, la ruta del ID es totalmente diferente a la ruta real del archivo .jpg. No entiendo porque esto es así aunque imagino que es una forma que tiene prestashop para organizar carpetas. Por lo que, entiendo que necesito la ruta de imagen real, pero no se como se obtiene un CSV correcto con los datos necesarios desde el prestashop 1.6.X.X, con nombre, descripción, precios y rutas de imágenes reales. 

 

¿Alguien tiene alguna solución para esto? ¿Alguien sabe como saber un CSV correcto para hacer importaciones masivas? Tengo conocimientos mínimos sobre estas cosas.

 

PD: Tengo unos 2000 productos activos y 4000 en total. Es una lista larga xD. Buscar cada imagen y modificar url manualmente lo tengo descartado.

Gracias por su ayuda.

Contenido solo visible a usuarios registrados


 
Respondido : 13/02/2026 9:05 am
Pepe
 Pepe
Respuestas: 42248
Illustrious Member Admin
 

Hola.

PrestaShop 8 maneja las imágenes de forma diferente (usa un sistema más moderno con subcarpetas por defecto y no "legacy images" por defecto). La forma más limpia y compatible es exportar en CSV desde 1.6 con las URLs de las imágenes y luego importar en 8

Revisa esta consulta del foro donde tratamos el tema:

-> https://www.webempresa.com/foro/preguntas-sobre-prestashop/pasar-prestashop-16-a-17

Para la importación tienes que copiar la carpeta img/p e img/c en la nueva instalación

Una vez lo tengas copiado:

  • Ve al backoffice → Parámetros de la tienda > Imágenes (o Design > Image settings en inglés).
  • Busca la opción "Usar el sistema de imágenes heredado" o "Legacy images mode" (puede estar en "Preferencias de imágenes").
    • Actívala (YES/ON).
  • Guarda los cambios.
  • Esto fuerza a PS8 a leer exactamente la estructura antigua de /img/p/ y /img/c/.

Regenera todas las miniaturas (muy importante):

  • En la misma página de Imágenes → baja hasta el final.
  • Haz clic en "Regenerar miniaturas" o "Regenerate thumbnails".
  • Marca todas las opciones (productos, categorías, etc.).
  • Ejecuta el proceso (puede tardar minutos u horas si tienes miles de productos; hazlo en varias pasadas si falla por timeout).
  • Importa los productos (si aún no lo hiciste):
    • Usa tu CSV con las columnas de imágenes (las URLs o solo los nombres/IDs).
    • Durante la importación en PS8 → mapea la columna de imágenes correctamente.
    • Si usaste "Force all IDs" en la importación → los IDs de imágenes coincidirán perfecto con los archivos copiados.
  • Prueba y desactiva legacy si quieres optimizar:
    • Una vez que todo se vea bien → puedes probar desactivar el modo legacy.
    • Si las imágenes desaparecen → vuelve a activarlo o regenera de nuevo.
    • En PS8 el modo legacy funciona bien para migraciones, pero para tiendas nuevas se recomienda el sistema moderno (PS lo migra automáticamente si regeneras).

 

Un saludo


 
Respondido : 13/02/2026 10:52 am
Respuestas: 108
Estimable Member
Topic starter
 

Buenas tardes.

Al final he conseguido sacar las imagenes con un código SQL que me exporta las URL creando carpetas según el ID. EJ: ID_producto=8735.jpg > URL: /8/7/3/5/8735.jpg.

Ya he importado algunos productos de prueba, pero ahora tengo otro problema.

Ahora no puedo modificar el stock por ejemplo. Me salta error: ·[PrestaShop\PrestaShop\Core\Domain\Product\Exception\CannotUpdateProductException código 60]·

Para empeorar la cosa, he ido a Configuración de la tienda > Configuracion de Productos > Mostrar cantidades disponibles en la página del producto y lo he puesto en NO, para ver si mejoraba algo. Ahora la información de Stock a desaparecido y "Mostrar cantidades disponibles en la página del producto" no me permite volver a poner en SI.

 

¿Estoy haciendo algo mal? ¿saben si es un error comun o solo me paso a mi?

 

Gracias de antemano.


 
Respondido : 13/02/2026 1:24 pm
Karen Rios
Respuestas: 19413
Illustrious Member Moderator
 

Hola Yongwei, 

En este caso ese error suele aparecer cuando la importación dejó datos de stock incompletos/duplicados o cuando hay un fallo al guardar la configuración (caché/bug).

Accede a Parámetros avanzados → Rendimiento → Borrar caché de igual forma purbea acceder a tu webpanel y borra o rebombra las carpetas manualmente de var/cache/* que encuentra en el directorio donde tienes el sitio web

De igual forma revisa como esta la configuraci[on de la tienda, verifica que la opcion de Stock de productos esta activo

Si sigue igual, revisa el archivo var/logs/prod.log (o el error_log de tu cuenta de hosting) al intentar cambiar el stock, porque ahí saldrá la causa real del “código 60”.

Envianos que se muestra para revisarlo con mayor detalle. 

Un Saludo 

 

 
Respondido : 13/02/2026 2:46 pm
Respuestas: 108
Estimable Member
Topic starter
 

Buenos días.

En el logs solo he visto información de módulos obsoletos de prestashop (que he ignorado porque el prestashop es nuevo recién instalado desde 0) y algún otro de caches de cuando probé modo debug. Solo eran notificaciones.

Busque en internet y alguien dijo que actualizando mucho el navegador se podía activar lo de los productos y así lo hice. Ahora ya puedo poner stock y precio sin problemas, pero, ahora tengo otro problema.

 

No puedo crear categorias desde prestashop. Me da error: "Se ha producido un error inesperado. [PrestaShop\PrestaShop\Core\Domain\Category\Exception\CategoryConstraintException código 6]"

 

He revisado la estructura de (tabla)_category en base de datos y está correcta con el id_parent (raid e inicio). Si hago una consulta SQL me deja agregar categorías sin problemas y en el prestashop si se muestran como si estuviera bien, pero si intento agregar una desde el prestashop me da dicho error.

 

¿Puede ser que prestashop 9.0.3 aun no esté muy fino y tengo muchas bugs? ¿Debería borrarlo y crearlo de nuevo?

¿Debería irme a 8.2.4?

 

Si me pueden aconsejar se lo agradecería gracias.

 

Saludos.


 
Respondido : 16/02/2026 8:42 am
Pepe
 Pepe
Respuestas: 42248
Illustrious Member Admin
 

Hola.

El error CategoryConstraintException code 6 en PrestaShop casi siempre está relacionado con problemas en la estructura de categorías raíz (Root category) o la categoría por defecto (Home/default).

  • Falta la categoría raíz (Root category) o la categoría Home
  • Hay más de una categoría raíz (is_root_category = 1)
  • La categoría Home no tiene padre correctamente asignado o está corrupta
  • Después de una migración, importación o actualización grande, la estructura de categorías se rompió

.- Accede a phpMyAdmin

Ejecuta esta consulta:

SELECT id_category, id_parent, is_root_category, active, name
FROM ps_category
WHERE is_root_category = 1
OR id_category = 1
OR id_category = 2;

 

Lo normal debería ser:
.- id_category = 1 → Root category (is_root_category = 1, id_parent = 0)
.- id_category = 2 → Home (id_parent = 1, is_root_category = 0)
Si ves:
.- 0 filas con is_root_category = 1 -> ese es el problema principal
.- 2 o más filas con is_root_category = 1 -> también es problema

 

Crea manualmente la categoría raíz si no existe (o corrige la existente):

INSERT INTO ps_category (id_parent, is_root_category, active, date_add, date_upd)
VALUES (0, 1, 1, NOW(), NOW());
SET @new_root_id = LAST_INSERT_ID();
INSERT INTO ps_category_lang (id_category, id_shop, id_lang, name, link_rewrite, meta_title)
VALUES (@new_root_id, 1, 1, 'Root', 'root', 'Root'); -- ajusta id_shop e id_lang según tu tienda

 

Luego asigna como padre a la categoría Home (normalmente id 2):

UPDATE ps_category
SET id_parent = @new_root_id
WHERE id_category = 2; -- o el ID de tu Home

 

Una vez lo tengas, Vacía la Cache y lo pruebas.

 

Un Saludo


 
Respondido : 16/02/2026 10:23 am
Respuestas: 108
Estimable Member
Topic starter
 

Buenos días.

La consulta no funciona y da error:

Error

consulta SQL: Copiar Documentación

SELECT id_category, id_parent, is_root_category, active, name
FROM ps_category
WHERE is_root_category = 1
OR id_category = 1
OR id_category = 2 LIMIT 0, 25

 

MySQL ha dicho: Documentación

#1054 - No se reconoce la columna 'name' en SELECT

 

Creo que en prestashop 9 no existe columna Name en esa tabla.
He cambiado su consulta por esta otra:
SELECT c.id_category, c.id_parent, c.is_root_category, c.active, cl.name
FROM ps_category c
INNER JOIN ps_category_lang cl
ON c.id_category = cl.id_category
WHERE (c.is_root_category = 1 OR c.id_category IN (1,2))
AND cl.id_lang = 1
LIMIT 0, 25;

Y me ha dado el siguiente resultado:

id_category id_parent is_root_category active name  
1 0 0 1 Raíz
2 1 1 1 Inicio

 

¿ve algo raro?
No se si en ligar de Raíz debería aparecer ROOT y ese es el problema o si hay algún dato distinto.

Puedo ver que is_root_category está al contrario de lo que me ha indicado, creo.

Gracias.


 
Respondido : 16/02/2026 10:33 am
Pepe
 Pepe
Respuestas: 42248
Illustrious Member Admin
 

Hola.

El problema principal aquí es que la categoría raíz (is_root_category = 1) tiene ID 10, pero la categoría "Inicio" (Home, la que debería estar directamente debajo de la raíz) tiene id_parent = 1.

En una instalación estándar de PrestaShop:

  • La raíz real suele ser ID 1 (is_root_category = 1, id_parent = 0)
  • Home es ID 2 (id_parent = 1, is_root_category = 0)

Pero en tu caso:

  • Raíz = ID 10 (correcto en cuanto a flags)
  • Home = ID 2 → pero apunta a id_parent = 1 (que probablemente no existe o no es la raíz)

Corrige el id_parent de la categoría "Inicio" (ID 2) para que apunte a la raíz real (ID 10):

UPDATE ps_category
SET id_parent = 10
WHERE id_category = 2;

Asegúrate de que no haya otra categoría con is_root_category = 1

SELECT * FROM ps_category WHERE is_root_category = 1;

Debería salir solo la ID 10. Si hay más de una, pon las demás a 0

 

Limpia la cache y lo revisas.

 

Si ves que sigues con el problema:

Haz la misma corrección también en ps_category_shop

UPDATE ps_category_shop
SET id_category = id_category -- dummy para forzar
WHERE id_category IN (2, 10);

 

Un Saludo


 
Respondido : 16/02/2026 10:53 am
Respuestas: 108
Estimable Member
Topic starter
 

Al final he creado un prestashop nuevo y parece que ya funciona bien. No se que habrá pasado, quizás tocando algo de base de datos se había corrompido de alguna manera.

Para no volver a liarla con la nueva web. ¿Como puedo importar productos desde csv de prestashop 1.6?

¿Puedo importar solo algunos datos como nombre, descripción, cantidad, precio e imagenes? o ¿Tendría que hacerlo desde otro sitio?


 
Respondido : 16/02/2026 11:37 am
Pepe
 Pepe
Respuestas: 42248
Illustrious Member Admin
 

Hola Yongwei.

 ¿Como puedo importar productos desde csv de prestashop 1.6?

Si no te quieres complicar la vida lo mejor es utilizar un Modulo:

-> https://addons.prestashop.com/en/data-transfer-backup/8934-migrationpro-prestashop-migration-migrate-upgrade.html

Lo único que tienes que tener en cuenta son las imágenes, lo más común es que fallen. Sube primero todas las imágenes a la nueva tienda y luego pon las URLs en el CSV o usa el ID de imagen nuevo.

Cuando impartes el archivo revisa que todas las columnas estén relacionadas.

¿Puedo importar solo algunos datos como nombre, descripción, cantidad, precio e imagenes? o ¿Tendría que hacerlo desde otro sitio?

Si puedes importar las columnas que quieras, simplemente elimina las columnas que no quieres importar en el archivo CSV

 

Un saludo


 
Respondido : 16/02/2026 12:19 pm
Respuestas: 108
Estimable Member
Topic starter
 

Buenas tardes.

Una pregunta que no me ha quedado claro.

Si subo un CSV solo con Nombre, Descripción, Precio, cantidad e imagen.....¿que pasa con los campos que no subo en la base de datos?

No se si al subir solo algunos campos e "ignorar" otros campos, puedan quedar con problemas en la base de datos (por campos vacíos o nulos), no se si me explico.


 
Respondido : 16/02/2026 12:46 pm
Pepe
 Pepe
Respuestas: 42248
Illustrious Member Admin
 

Hola Yongwei

¿que pasa con los campos que no subo en la base de datos?

Nada grave, PrestaShop los trata así:

  • Si es un producto NUEVO (no tiene ID o usas reference y no existe): los campos que no incluyes o dejas vacíos quedan en blanco o con su valor por defecto (por ejemplo: stock = 0, precio = 0, descripción vacía, etc.). El producto se crea igual siempre que llenes los campos obligatorios (principalmente Name / Nombre, y en algunos casos Active, Price, Categories).
  • Si es un producto que YA EXISTE (lo identificas por ID o por Reference):
    • Los campos que no incluyes en el CSV → NO se modifican (se quedan como estaban antes).
    • Los campos que incluyes pero dejas en blancose ponen a vacío o a 0 (depende del campo). Por ejemplo:
      • Si dejas "quantity" en blanco → el stock se pone a 0.
      • Si dejas "description" en blanco → borra la descripción anterior.
      • Si dejas "price tax excluded" en blanco → el precio se pone a 0 (¡cuidado con esto!).

En resumen:

  • Deja en blanco o elimina columnas que no quieras tocar (ej. meta_title, tags, etc.).
  • Solo pon valores en las columnas que sí quieras actualizar.
  • Campos obligatorios como Name no pueden estar vacíos en productos nuevos, o dará error tipo "Property Product->name is empty" o "cannot be saved".

 

Un Saludo


 
Respondido : 16/02/2026 1:00 pm