Fehler 404 auf allen Seiten aufgrund eines Problems beim Staging von Inhalten
Dieser Artikel enthält eine Fehlerbehebung für das Problem mit der Cloud-Infrastruktur in Adobe Commerce vor Ort und Adobe Commerce, bei dem beim Zugriff auf eine Storefront-Seite oder den Commerce-Administrator ein 404-Fehler ausgegeben wird.
Betroffene Produkte und Versionen
- Adobe Commerce lokal 2.2.x, 2.3.x
- Adobe Commerce auf Cloud-Infrastruktur 2.2.x, 2.3.x
Problem
Der Zugriff auf eine Storefront-Seite oder den Admin-Server führt zum 404-Fehler (die Seite "Ups, unser schlechtes …"), nachdem Vorgänge mit geplanten Aktualisierungen für Store-Content-Assets unter Verwendung von Content Staging ausgeführt wurden (Aktualisierungen für Store-Inhalts-Assets, die mit dem Magento_Staging-Modul geplant wurden). Beispielsweise können Sie ein Produkt mit einer geplanten Aktualisierung gelöscht oder das Enddatum für die geplante Aktualisierung entfernt haben.
Ein Store-Inhalts-Asset umfasst:
- Produkt
- Kategorie
- Katalogpreisregel
- Preisregel für Warenkorb
- CMS-Seite
- CMS-Block
- Widget
Einige Szenarien werden im Abschnitt Ursache weiter unten erläutert.
Ursache
Die Tabelle flag
in der Datenbank (DB) enthält ungültige Links zur Tabelle staging_update
.
Das Problem bezieht sich auf die Inhaltstaging-Umgebung. Im Folgenden finden Sie zwei besondere Szenarien. Bitte beachten Sie, dass es möglicherweise mehr Situationen gibt, die das Problem Trigger haben.
Szenario 1: Löschen eines Store-Inhalts-Assets, das:
- hat eine Aktualisierung geplant, die mit Content Staging durchgeführt wird.
- Die Aktualisierung hat ein Enddatum (d. h. das Ablaufdatum, nach dem das aktualisierte Asset zur vorherigen Version zurückkehrt).
- das Enddatum der Aktualisierung liegt in der Vergangenheit
Das Problem tritt möglicherweise nicht auf, wenn ein gelöschtes Asset kein Enddatum für die geplante Aktualisierung hat.
Szenario 2: Entfernung des Enddatums/der Endzeit einer geplanten Aktualisierung.
Identifizieren, ob Ihr Problem damit in Zusammenhang steht
Um festzustellen, ob das in diesem Artikel beschriebene Problem vorliegt, führen Sie die folgende DB-Abfrage aus:
SELECT f.flag_data >'$.current_version' as flag_version, (su.id IS NOT NULL) as update_exists
-> FROM flag f
-> LEFT JOIN staging_update su
-> ON su.id = f.flag_data >'$.current_version'
-> WHERE flag_code = 'staging';
Wenn die Abfrage eine Tabelle zurückgibt, bei der der update_exists
-Wert "0"ist, ist in Ihrer Datenbank ein ungültiger Link zur staging_update
-Tabelle vorhanden. Die im Abschnitt Lösung beschriebenen Schritte helfen bei der Lösung des Problems. Im Folgenden finden Sie ein Beispiel des Abfrageergebnisses mit dem Wert update_exists
gleich "0":
Wenn die Abfrage eine Tabelle zurückgibt, bei der der update_exists
-Wert "1"oder ein leeres Ergebnis ist, bedeutet dies, dass Ihr Problem nicht mit Staging-Updates in Zusammenhang steht. Im Folgenden finden Sie ein Beispiel des Abfrageergebnisses mit dem Wert update_exists
gleich "1":
In diesem Fall finden Sie möglicherweise Informationen zur Fehlerbehebung in der Site-Down-Fehlerbehebung.
Lösung
-
Führen Sie die folgende Abfrage aus, um den ungültigen Link zur Tabelle
staging_update
zu löschen:code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
Warten Sie, bis der Cron-Auftrag ausgeführt wird (wird bis zu fünf Minuten ausgeführt, wenn er ordnungsgemäß eingerichtet ist), oder führen Sie ihn manuell aus, wenn kein Cron eingerichtet ist.
Das Problem sollte sofort behoben werden, nachdem der ungültige Link behoben wurde. Wenn das Problem weiterhin besteht, senden ein Support-Ticket.