Migración de PrestaShop 1.6 a 8.2: Estrategias sin pérdida de datos
La migración de PrestaShop 1.6 a la versión 8.2 es una de las tareas más críticas que puede afrontar un administrador de sistemas o un propietario de una tienda online. Saltar de una arquitectura basada en PHP 5.6 (o 7.0) a PHP 8.1/8.2 implica cambios profundos en el núcleo, en la gestión de plantillas y en la seguridad. El objetivo no es solo actualizar PrestaShop, sino hacerlo sin perder un solo dato de clientes, pedidos o productos. Este artículo desglosa la estrategia definitiva para una migración segura, paso a paso, con herramientas de línea de comandos, copias de seguridad diferenciales y pruebas de estrés.
Fase 1: Auditoría y preparación del entorno
Antes de tocar un solo archivo, debes saber exactamente qué tienes. Una migración PrestaShop de una versión tan antigua como la 1.6 a la 8.2 no se puede hacer con un simple clic en el back office. El primer paso es auditar el servidor y la base de datos.
Requisitos técnicos mínimos para PrestaShop 8.2
PrestaShop 8.2 exige un stack moderno. Si tu servidor actual corre PHP 5.6, estás fuera de juego. Debes preparar un entorno independiente (puede ser un VPS, un contenedor Docker o un subdominio de staging).
- PHP 8.1 o 8.2 (recomendado PHP 8.2 por rendimiento).
- MySQL 8.0+ o MariaDB 10.4+.
- Apache 2.4+ con mod_rewrite o Nginx 1.18+.
- Mínimo 512 MB de RAM para el proceso de migración (recomendado 1 GB).
[WARNING] No intentes migrar en el mismo servidor de producción. Crea un clon exacto en un entorno de pruebas. Un error en la migración puede dejar tu tienda offline durante horas.
Herramientas necesarias
Necesitarás acceso SSH y las siguientes herramientas instaladas en tu máquina local o servidor de staging:
rsyncpara copias de archivos.mysqldumppara volcado de base de datos.gitpara control de versiones (opcional pero muy recomendado).composer(PrestaShop 8.2 lo usa para dependencias).
Lista de verificación previa
- Realizar copia de seguridad completa de archivos y base de datos.
- Desactivar todos los módulos de terceros (especialmente los que no tienen versión para 1.7 u 8.x).
- Exportar la lista de módulos y temas instalados.
- Verificar que no hay tablas corruptas en la base de datos (
CHECK TABLE). - Anotar la versión exacta de PrestaShop 1.6 (p.ej. 1.6.1.24).
Fase 2: Migración de datos mediante la herramienta oficial (1-Click Upgrade)
El método más fiable para una migración segura es utilizar el módulo 1-Click Upgrade de PrestaShop, pero con un enfoque controlado. No se puede saltar directamente de 1.6 a 8.2. Necesitas una migración por fases.
Estrategia de migración en tres etapas
- De PrestaShop 1.6.x a la última 1.7.x (por ejemplo, 1.7.8.10).
- De PrestaShop 1.7.x a PrestaShop 8.0.x.
- De PrestaShop 8.0.x a PrestaShop 8.2.x.
Cada salto requiere su propio proceso de actualización. No intentes saltar directamente de 1.6 a 8.2, el actualizador nativo no lo soporta.
Instalación del módulo 1-Click Upgrade
En tu clon de staging, instala el módulo autoupgrade desde el back office o descárgalo del repositorio oficial.
# Accede al directorio de tu tienda clonada
cd /var/www/mitienda-staging
# Descarga el módulo (versión estable)
wget https://github.com/PrestaShop/autoupgrade/releases/download/v4.14.3/autoupgrade.zip
unzip autoupgrade.zip -d modules/
Luego, desde el back office, ve a Módulos > Gestor de módulos, busca "1-Click Upgrade" y actívalo.
Configuración del proceso de actualización
Ve a Parámetros Avanzados > Asistente de actualización. Selecciona la versión destino (primero 1.7.8.10). Marca las siguientes opciones:
- Modo de actualización: "Conservar los datos".
- Desactivar todos los módulos: Sí.
- Regenerar las imágenes: Sí (necesario para los nuevos formatos de PrestaShop 8).
- Habilitar el modo de mantenimiento: Sí, para evitar compras durante el proceso.
[TIP] Si tu base de datos tiene muchos registros (más de 100k productos o 500k pedidos), ejecuta la actualización desde la línea de comandos usando el script
cli-upgrade.phppara evitar timeouts.
php modules/autoupgrade/cli-upgrade.php --version=1.7.8.10 --admin-dir=admin1234
El proceso puede durar desde 10 minutos hasta varias horas. No interrumpas la conexión SSH.
Fase 3: Migración manual de datos (Plan B)
Si el módulo 1-Click Upgrade falla (lo que es común en tiendas con muchos módulos personalizados), debes recurrir a la migración manual. Este método garantiza un control absoluto sobre los datos.
Exportación de la base de datos
Primero, exporta la base de datos de tu PrestaShop 1.6 original con un volcado limpio.
mysqldump -u usuario -p --opt --routines --triggers --single-transaction prestashop_16 > backup_16.sql
Transformación de la estructura de la base de datos
PrestaShop 8.2 tiene un esquema de base de datos muy diferente al de 1.6. Necesitas un script de transformación. Puedes usar la herramienta PrestaShop Database Migrator (no oficial, pero muy usada en la comunidad) o escribir tu propio script SQL.
Principales cambios:
- Tabla
ps_productcambia: se añaden columnas comoadditional_delivery_times,advanced_stock_management. - Tablas de combinaciones:
ps_product_attributeyps_product_attribute_combinationse reestructuran. - Tablas de pedidos:
ps_ordersañade campos comocurrent_stateyreference.
Ejemplo de migración de una tabla de productos:
-- Añadir columnas faltantes para PrestaShop 8.2
ALTER TABLE `ps_product`
ADD COLUMN `additional_delivery_times` tinyint(1) unsigned NOT NULL DEFAULT '1' AFTER `on_sale`,
ADD COLUMN `advanced_stock_management` tinyint(1) unsigned NOT NULL DEFAULT '0' AFTER `additional_delivery_times`;
Migración de archivos
Copia los archivos estáticos (imágenes, descargas, archivos de módulos) usando rsync. Evita copiar los archivos de núcleo de PrestaShop 1.6, solo los datos generados por el usuario.
rsync -avz --delete --exclude='cache/' --exclude='config/' --exclude='modules/' --exclude='themes/' --exclude='vendor/' usuario@servidor-origen:/ruta/tienda16/ /ruta/tienda82/
Luego, instala PrestaShop 8.2 limpio en el destino y restaura la base de datos transformada.
# Restaurar la base de datos transformada
mysql -u usuario -p prestashop_82 < backup_transformado.sql
# Ajustar los permisos de archivos
chown -R www-data:www-data /ruta/tienda82/
chmod -R 755 /ruta/tienda82/
Fase 4: Post-migración y verificación de integridad
Una vez completada la migración PrestaShop, no asumas que todo funciona. La verificación es la fase más importante.
Verificación de datos críticos
- Pedidos pendientes: Revisa que todos los pedidos en estado "Pago aceptado" o "En preparación" estén presentes.
- Clientes: Comprueba que el número de clientes coincida con el original (
SELECT COUNT(*) FROM ps_customer). - Productos: Verifica que las combinaciones, precios y stocks sean correctos.
- URLs: Asegúrate de que las URLs amigables de productos y categorías se mantienen (usa redirecciones 301 si cambian).
Regeneración de índices y cachés
PrestaShop 8.2 tiene un nuevo sistema de caché. Debes regenerar los índices de búsqueda y las miniaturas de imágenes.
# Desde la línea de comandos
php bin/console prestashop:search:index --all
php bin/console prestashop:theme:rebuild --theme=classic
[INFO] Si usas un tema personalizado de PrestaShop 1.6, este no será compatible con 8.2. Deberás adaptarlo o comprar un tema nativo para 8.x. La estructura de plantillas cambió de TPL a Twig.
Pruebas funcionales
Crea un checklist de pruebas manuales:
- Registro de nuevo usuario.
- Proceso de compra completo (añadir al carrito, checkout, pago simulado).
- Visualización de productos con combinaciones.
- Búsqueda interna.
- Módulos de pago y envío (deben estar actualizados a la versión 8.x).
Fase 5: Puesta en producción y monitorización
Cuando todo funcione en staging, es hora de migrar a producción. Pero hazlo con cuidado.
Estrategia de corte (cut-over)
- Poner la tienda original en modo mantenimiento.
- Realizar una última copia de seguridad diferencial de la base de datos (solo cambios desde la migración).
- Aplicar esos cambios incrementales a la base de datos de la nueva tienda.
- Cambiar el DNS para apuntar al nuevo servidor (o cambiar la IP si es el mismo servidor).
- Desactivar el modo mantenimiento en la nueva tienda.
# Ejemplo de volcado diferencial (solo tablas de pedidos y carritos)
mysqldump -u usuario -p prestashop_16 ps_orders ps_cart ps_customer > diff_orders.sql
mysql -u usuario -p prestashop_82 < diff_orders.sql
Monitorización post-lanzamiento
Durante las primeras 48 horas, monitoriza:
- Logs de errores de PHP (
/var/log/php_errors.log). - Logs de PrestaShop (back office > Parámetros Avanzados > Logs).
- Rendimiento del servidor (uso de CPU, RAM, consultas lentas en MySQL).
- Errores 404: Usa Google Search Console para detectar URLs rotas.
Conclusión
Migrar de PrestaShop 1.6 a 8.2 es un proceso complejo pero perfectamente realizable si se sigue una estrategia metódica. La clave está en no saltarse pasos: auditar, migrar por fases, verificar cada dato y tener un plan de contingencia. Una migración segura no solo conserva tus datos, sino que mejora el rendimiento, la seguridad y la experiencia de usuario. Con PHP 8.2 y la nueva arquitectura de PrestaShop 8.2, tu tienda estará preparada para los próximos años.
Si no te sientes cómodo con la línea de comandos o la manipulación directa de la base de datos, considera contratar a un especialista en actualizar PrestaShop. El coste de un error (pérdida de datos, caída de la tienda) puede ser mucho mayor que la inversión en un servicio profesional.
[TIP] Guarda siempre una copia de seguridad de la base de datos original en frío (en un disco externo o en la nube). Incluso meses después de la migración, puede ser útil para recuperar algún dato antiguo.
