404 Fehler auf der Storefront, sobald die Zeitpläne der Katalogpreisregeln aktualisiert wurden
Dieser Artikel enthält einen Patch und die erforderlichen Schritte zum Beheben des bekannten Adobe Commerce 2.2.1-Problems beim Abrufen eines 404-Fehlers auf allen Store-Titelseiten, nachdem eine Aktualisierung der Katalogpreisregel erstellt und deren Startzeit später bearbeitet wurde. Um das Problem zu beheben, müssen Sie den Patch anwenden.
Problem
Storefront-Seiten sind nicht mehr verfügbar und geben den 404-Fehler zurück. Das Problem tritt auf, nachdem die Aktualisierung der aktiven Katalogpreisregel fällig wird, vorausgesetzt, das Anfangsdatum dieser Aktualisierung wurde nach der ersten Erstellung bearbeitet.
Zu reproduzierende Schritte:
- Erstellen Sie in Commerce Admin unter Marketing > Promotions > Katalogpreisregel eine neue Katalogpreisregel.
- Klicken Sie im Raster Katalogpreisregel auf Bearbeiten, planen Sie eine neue Aktualisierung und legen Sie Status auf Aktiv fest.
- Navigieren Sie zu "Inhalt"> "Content Staging"> "Dashboard".
- Wählen Sie das kürzlich erstellte Update aus und ändern Sie die Startzeit.
- Speichern Sie die Änderungen.
Erwartetes Ergebnis :
Wenn das Startdatum Aktualisieren wirksam wird, wird die Katalogpreisregel erfolgreich angewendet.
Tatsächliches Ergebnis :
Wenn das Startdatum der Aktualisierung in Kraft tritt, sind alle Kataloge und Produkte in der Storefront nicht mehr verfügbar und geben den 404-Fehler zurück.
Lösung
Um Katalogseiten wiederherzustellen und die Funktionen zur Aktualisierung der Katalogpreise vollständig zu nutzen, müssen Sie den Patch installieren, die Regel sowohl manuell als auch im Admin löschen und die ungültigen Links in der Datenbank korrigieren. Außerdem müssen Sie die Katalogpreisregel neu erstellen.
Im Folgenden werden die erforderlichen Schritte detailliert beschrieben:
- Wenden Sie den Patch an.
- Löschen Sie in Commerce Admin die Katalogpreisregel für das Problem (wo die Startzeit aktualisiert wurde). Öffnen Sie dazu die Regelseite unter Marketing > Promotions > Katalogpreisregel und klicken Sie auf Regel löschen.
- Durch manuellen Zugriff auf die Datenbank wird der zugehörige Datensatz aus der Tabelle
catalogrule
gelöscht. - Korrigieren Sie die ungültigen Links in der Datenbank. Weitere Informationen finden Sie im Abschnitt zugehörigen Absatz .
- Wechseln Sie im Commerce-Admin unter Marketing zu Promotions > Katalogpreisregel und erstellen Sie die neue Regel mit der erforderlichen Konfiguration.
- Löschen Sie den Browser-Cache unter System > Cache-Verwaltung.
- Stellen Sie sicher, dass die Cron-Aufträge ordnungsgemäß konfiguriert sind und erfolgreich ausgeführt werden können.
Patch patch
Der Patch ist an diesen Artikel angehängt. Scrollen Sie zum Herunterladen nach unten zum Ende des Artikels und klicken Sie auf den Dateinamen oder auf den folgenden Link:
Kompatible Adobe Commerce-Versionen:
Der Patch wurde für erstellt:
- Adobe Commerce 2.2.1
Der Patch ist auch mit den folgenden Adobe Commerce-Versionen und -Editionen kompatibel (löst das Problem jedoch möglicherweise nicht):
- Adobe Commerce auf Cloud-Infrastruktur 2.2.0 - 2.2.4
- Adobe Commerce vor Ort 2.2.0 und 2.2.2 - 2.2.4
Anwenden des Pflasters
Anweisungen finden Sie unter Anwenden eines von Adobe bereitgestellten Composer-Patches in unserer Support-Wissensdatenbank.
Beheben Sie die ungültigen Links zum Staging in DB fix_links
Führen Sie die folgenden Schritte aus, um die Zeilen mit ungültigen Links zur Tabelle staging_update
zu korrigieren.
-
Überprüfen Sie, ob die ungültigen Links zur Tabelle
staging_update
in der Tabelleflag
vorhanden sind. Dies sind Datensätze, bei denenflag_code=staging
verwendet wird. -
Identifizieren Sie die ungültige Version aus der Tabelle
flag
mithilfe der folgenden Abfrage:code language-sql SELECT flag_data FROM flag WHERE flag_code = 'staging';
-
Wählen Sie in der Tabelle
staging_update
die vorhandene Version aus, die kleiner als die aktuelle (ungültige) Version ist, und rufen Sie den Versionswert ab, der zwei Zahlen zurückgibt. Sie nehmen es, nicht die vorherige Version, um zu vermeiden, dass die vorherige Version die maximale Version in derstaging_update
-Tabelle ist, die angewendet werden könnte, und wir müssen sie trotzdem erneut anwenden.code language-sql SELECT id FROM staging_update WHERE id < %current_id% ORDER BY id DESC LIMIT 1, 1
Die Version, die Sie als Antwort erhalten, ist Ihre gültige Version
id
. -
Setzen Sie für die Zeilen mit ungültigen Links in der Tabelle
flag
dieflag_data
-Werte auf Daten, die eine gültige Versions-ID enthalten. Dies hilft, die Leistung beim Neuindizierungsschritt zu speichern, und ermöglicht es, eine Neuindizierung aller Entitäten zu vermeiden.code language-sql UPDATE flag SET flag_data=REPLACE(flag_data, '%invalid_id%', '%new_valid_id%') WHERE flag_code='staging';
Beispiel:
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';