404 Fel i butiksleverans när uppdatering av katalogiffegler har utförts

I den här artikeln finns en korrigeringsfil och de steg som krävs för att åtgärda det kända Adobe Commerce 2.2.1-problemet som rör att få ett 404-fel på alla butikssidor, efter att en uppdatering av katalogprisregeln har skapats och starttiden redigerades senare. För att åtgärda problemet måste du installera korrigeringen.

Problem

Det går inte att komma åt butikssidor, vilket returnerar 404-fel. Problemet uppstår när den aktiva katalogens prisregeluppdatering förfaller, under förutsättning att startdatumet för den här uppdateringen redigerades efter det att den första uppdateringen skapades.

Steg som ska återskapas:

  1. I Commerce Admin skapar du en ny katalogprisregel under Marknadsföring > Kampanjer > Katalogprisregel.
  2. Klicka på Redigera i rutnätet Katalogens prisregel och schemalägg en ny uppdatering och ange Status till Aktiv.
  3. Navigera till Innehåll > Förproduktion av innehåll > Kontrollpanel.
  4. Markera den nyligen skapade uppdateringen och ändra dess starttid.
  5. Spara ändringarna.

Förväntat resultat :

När uppdateringens startdatum börjar gälla tillämpas katalogprisregeln.

Faktiskt resultat :

När uppdateringens startdatum börjar gälla blir alla kataloger och produkter i butiken otillgängliga och returnerar felet 404.

Lösning

Om du vill återställa katalogsidor och kunna använda uppdateringsfunktionen för katalogprisregler fullt ut måste du installera korrigeringsfilen, ta bort regeln både manuellt och i administratören och åtgärda de ogiltiga länkarna i databasen. Du måste också återskapa katalogprisregeln.

Här följer en detaljerad beskrivning av de steg som krävs:

  1. Använd korrigeringen.
  2. I Commerce Admin tar du bort katalogprisregeln för problemet (där starttiden uppdaterades). Det gör du genom att öppna regelsidan under Marknadsföring > Kampanjer > Katalogprisregel och klicka på Ta bort regel.
  3. Om du öppnar databasen manuellt tas den relaterade posten bort från tabellen catalogrule.
  4. Åtgärda ogiltiga länkar i databasen. Mer information finns i det relaterade stycket.
  5. Gå till Kampanjer > Katalogprisregel i Commerce Admin under Markering och skapa den nya regeln med den konfiguration som krävs.
  6. Rensa webbläsarcachen under System > Cachehantering.
  7. Kontrollera att cron-jobben är korrekt konfigurerade och kan köras.

Lappa patch

Korrigeringen är kopplad till den här artikeln. Om du vill hämta den bläddrar du nedåt till slutet av artikeln och klickar på filnamnet eller klickar på följande länk:

Hämta MDVA-7392_EE_2.2.1_COMPOSER_v2.patch

Kompatibla Adobe Commerce-versioner:

Korrigeringen skapades för:

  • Adobe Commerce 2.2.1

Patchen är även kompatibel (men löser kanske inte problemet) med följande versioner och utgåvor av Adobe Commerce:

  • Adobe Commerce om molninfrastruktur 2.2.0 - 2.2.4
  • Adobe Commerce lokal 2.2.0 och 2.2.2 - 2.2.4

Så här sätter du på plåstret

Mer information finns i Använda en dispositionsruta från Adobe i vår kunskapsbas för support.

WARNING
Vi rekommenderar starkt att du skapar en säkerhetskopia av databasen före eventuella databasändringar. Vi rekommenderar också att du testar frågor om utvecklingsmiljön först.

Följ de här stegen för att korrigera raderna med ogiltiga länkar till tabellen staging_update.

  1. Kontrollera om de ogiltiga länkarna till tabellen staging_update finns i tabellen flag. Det här är poster där flag_code=staging.

  2. Identifiera den ogiltiga versionen från tabellen flag med följande fråga:

    code language-sql
    SELECT flag_data FROM flag WHERE flag_code = 'staging';
    
  3. I tabellen staging_update väljer du den befintliga versionen som är mindre än den aktuella (ogiltiga) versionen och hämtar versionsvärdet som är två siffror tillbaka. Du kan använda den, inte den föregående versionen, för att undvika situationen när den tidigare versionen är den högsta versionen i tabellen staging_update som kan användas och vi fortfarande måste tillämpa den igen.

    code language-sql
    SELECT id FROM staging_update WHERE id < %current_id% ORDER BY id DESC LIMIT 1, 1
    

    Versionen du får som svar är din giltiga version id.

  4. För rader med ogiltiga länkar i tabellen flag anger du flag_data-värdena till data som ska innehålla ett giltigt versions-ID. Detta hjälper till att spara prestanda vid omindexering och gör att du kan undvika omindexering av alla enheter.

    code language-sql
    UPDATE flag SET flag_data=REPLACE(flag_data, '%invalid_id%', '%new_valid_id%') WHERE flag_code='staging';
    

Exempel:

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';

Bifogade filer

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