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:

  1. Erstellen Sie in Commerce Admin unter Marketing > Promotions > Katalogpreisregel eine neue Katalogpreisregel.
  2. Klicken Sie im Raster Katalogpreisregel auf Bearbeiten, planen Sie eine neue Aktualisierung und legen Sie Status auf Aktiv fest.
  3. Navigieren Sie zu "Inhalt"> "Content Staging"> "Dashboard".
  4. Wählen Sie das kürzlich erstellte Update aus und ändern Sie die Startzeit.
  5. 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:

  1. Wenden Sie den Patch an.
  2. 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.
  3. Durch manuellen Zugriff auf die Datenbank wird der zugehörige Datensatz aus der Tabelle catalogrule gelöscht.
  4. Korrigieren Sie die ungültigen Links in der Datenbank. Weitere Informationen finden Sie im Abschnitt zugehörigen Absatz .
  5. Wechseln Sie im Commerce-Admin unter Marketing zu Promotions > Katalogpreisregel und erstellen Sie die neue Regel mit der erforderlichen Konfiguration.
  6. Löschen Sie den Browser-Cache unter System > Cache-Verwaltung.
  7. 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:

MDVA-7392_EE_2.2.1_COMPOSER_v2.patch herunterladen

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.

WARNING
Es wird dringend empfohlen, vor der Bearbeitung der Datenbank eine Datenbanksicherung zu erstellen. Wir empfehlen auch, Abfragen zur Entwicklungsumgebung zuerst zu testen.

Führen Sie die folgenden Schritte aus, um die Zeilen mit ungültigen Links zur Tabelle staging_update zu korrigieren.

  1. Überprüfen Sie, ob die ungültigen Links zur Tabelle staging_update in der Tabelle flag vorhanden sind. Dies sind Datensätze, bei denen flag_code=staging verwendet wird.

  2. 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';
    
  3. 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 der staging_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.

  4. Setzen Sie für die Zeilen mit ungültigen Links in der Tabelle flag die flag_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';

Attached Files

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a