Error 404 en la tienda una vez que se ha realizado la actualización de las programaciones de reglas de precios del catálogo
Este artículo proporciona un parche y los pasos necesarios para solucionar el problema conocido de Adobe Commerce 2.2.1 relacionado con la obtención de un error 404 en todas las portadas de las tiendas, después de que se creara una actualización de la regla de precios de catálogo y se editara más tarde su hora de inicio. Para solucionar el problema, debe aplicar el parche.
Problema
Las páginas de tienda dejan de estar disponibles y devuelven el error 404. El problema aparece después de que venza la actualización de la regla de precios del catálogo activo, siempre que la fecha de inicio de esta actualización se haya editado después de la creación inicial.
Pasos a seguir:
- En el Administrador de Commerce, cree una nueva regla de precio de catálogo en Marketing > Promociones > Regla de precio de catálogo.
- En el Regla de precio de catálogo cuadrícula, haga clic en Editar, programar una nueva actualización y establecer Estado hasta Activo.
- Vaya a Contenido > Ensayo de contenido > Tablero.
- Seleccione la actualización creada recientemente y cambie su hora de inicio.
- Guarde los cambios.
Resultado esperado :
Cuando la fecha de inicio de la actualización entra en vigor, la regla de precios del catálogo se aplica correctamente.
Resultado real :
Cuando la fecha de inicio de la actualización entra en vigor, todos los catálogos y productos de la tienda dejan de estar disponibles para devolver el error 404.
Solución
Para restaurar las páginas del catálogo y poder utilizar completamente la funcionalidad de actualizaciones de las reglas de precios del catálogo, debe instalar el parche, eliminar la regla manualmente y en el administrador y corregir los vínculos no válidos en la base de datos. También deberá volver a crear la regla de precio de catálogo.
A continuación se ofrece una descripción detallada de los pasos necesarios:
- Aplicar el parche.
- En el Administrador de Commerce, elimine la regla de precio de catálogo relacionada con el problema (donde se actualizó la hora de inicio). Para ello, abra la página de regla en Marketing > Promociones > Regla de precio de catálogo y haga clic en Eliminar regla.
- Al acceder a la base de datos, se elimina manualmente el registro relacionado del
catalogrule
tabla. - Corrija los vínculos no válidos en la base de datos. Consulte la párrafo relacionado para obtener más información.
- En el Administrador de Commerce, en Marketing, vaya a Promociones > Regla de precio de catálogo y cree la nueva regla con la configuración requerida.
- Borre la caché del explorador en Sistema > Administración de caché.
- Asegúrese de que los trabajos de cron estén configurados correctamente y se puedan ejecutar correctamente.
Parche patch
El parche se adjunta a este artículo. Para descargarlo, desplácese hacia abajo hasta el final del artículo y haga clic en el nombre del archivo o haga clic en el siguiente vínculo:
Descargar MDVA-7392_EE_2.2.1_COMPOSER_v2.patch
Versiones de Adobe Commerce compatibles:
El parche se ha creado para:
- Adobe Commerce 2.2.1
El parche también es compatible (pero es posible que no resuelva el problema) con las siguientes versiones y ediciones de Adobe Commerce:
- Adobe Commerce en infraestructura en la nube 2.2.0 - 2.2.4
- Adobe Commerce local 2.2.0 y 2.2.2 - 2.2.4
Cómo aplicar el parche
Para obtener instrucciones, consulte Cómo aplicar un parche del compositor proporcionado por el Adobe en nuestra base de conocimiento de soporte.
Corregir los vínculos no válidos para ensayo en base de datos fix_links
Realice los siguientes pasos para corregir las filas con vínculos no válidos a staging_update
tabla.
-
Compruebe si los vínculos no válidos a
staging_update
existe en laflag
tabla. Estos serían registros dondeflag_code=staging
. -
Identifique la versión no válida del
flag
mediante la siguiente consulta:code language-sql SELECT flag_data FROM flag WHERE flag_code = 'staging';
-
Desde el
staging_update
, seleccione la versión existente que sea menor que la versión actual (no válida) y obtenga el valor de versión que sea dos números hacia atrás. Lo toma, no la versión anterior, para evitar la situación en la que la versión anterior es la versión máxima en elstaging_update
tabla que podría aplicarse y que aún necesitamos volver a aplicarla.code language-sql SELECT id FROM staging_update WHERE id < %current_id% ORDER BY id DESC LIMIT 1, 1
La versión que recibe como respuesta es su versión válida
id
. -
Para las filas con vínculos no válidos en la variable
flag
, configure laflag_data
a datos que contendrán un id de versión válido. Esto ayuda a ahorrar rendimiento en el paso de reindexación y permite evitar la reindexación de todas las entidades.code language-sql UPDATE flag SET flag_data=REPLACE(flag_data, '%invalid_id%', '%new_valid_id%') WHERE flag_code='staging';
Ejemplo:
SELECT flag_data FROM flag WHERE flag_code = 'staging'; <code class="language-bash">Response < 2.2 version</code>
+-------------------------------------------------+
| flag_data |
+-------------------------------------------------+
| a:1:{s:15:"current_version";s:10:"1490005140";} |
+-------------------------------------------------+
Response from 2.2 version
+-------------------------------------------------+
| flag_data |
+-------------------------------------------------+
| {"current_version":"1490005140"} |
+-------------------------------------------------+
SELECT id FROM staging_update WHERE id < 1490005140 <code class="language-sql">ORDER BY id DESC LIMIT 1, 1</code>;
Response:
1490005138
UPDATE flag SET flag_data=REPLACE(flag_data, '1490005140', '1490005138') WHERE flag_code='staging';