Distributionen misslyckades vid cachetömning: "Det finns inga definierade kommandon i felet "cache"-namnutrymme"

Om distributionen misslyckas i Adobe Commerce i molninfrastruktur med ett Det finns inga definierade kommandon i namnområdesfelet"cache" identifierar du de ogiltiga rader som återstår från dessa konfigurationer. Om du bara har en webbplats gäller inte det andra testet för webbplatserna, och du behöver bara testa för butiker.

Beskrivning description

Miljö

Adobe Commerce i molninfrastruktur 2.4.x

Problem

Varning: Säkerhetskopiera databasen först, om du gör detta på en aktiv produktionsplats, innan du utför de här stegen.

Den här artikeln innehåller en lösning på problemet när distributionen misslyckas och ett av felen i loggen ser ut så här:

[ YEAR-DAYTIME]  ERROR: [ 127]  The command "php ./bin/magento cache:flush --ansi --no-interaction" failed.
        There are no commands defined in the "cache" namespace.
...
      W:     There are no commands defined in the "cache" namespace.

Steg som ska återskapas:

Försök att distribuera.

Förväntade resultat:

Du har distribuerats.

Faktiska resultat:

Distributionen misslyckades. I loggarna visas ett distributionsfel med ett meddelande som liknar: Det finns inga kommandon i cache-namnområdet.

Orsak

Tabellen core_config_data innehåller konfigurationer för ett lagrings-ID eller webbplats-ID som inte längre finns i databasen. Detta inträffar när du har importerat en databassäkerhetskopia från en annan instans/miljö, och konfigurationerna för dessa omfattningar finns kvar i databasen, även om de associerade arkiven/webbplatserna har tagits bort.

Upplösning resolution

Om du bara har en webbplats gäller inte det andra testet för webbplatserna, och du behöver bara testa för butiker.

Identifiera de ogiltiga raderna som återstår från konfigurationerna för att lösa problemet.

  1. SSH till servern och kör det här kommandot:

    code language-none
    bin/magento
    
  2. Felmeddelandet kan visa vilka rader och tabeller som finns kvar i databasen från borttagna platser. Följande är till exempel ett fel som anger att det inte gick att hitta det begärda arkivet:

    code language-none
    ...
        In StoreRepository.php line 112:
    
        The store that was requested wasn't found. Verify the store and try again.
    
  3. Kör den här MySQL-frågan för att verifiera att arkivet inte kan hittas, vilket visas i felmeddelandet i steg 2.

    code language-none
    select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  4. Kör följande MySQL-sats för att ta bort de ogiltiga raderna:

    code language-none
    delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  5. Kör det här kommandot igen:

    code language-none
    bin/magento
    

    Om du får ett fel som det nedan som anger att webbplatsen med ID X som begärdes inte hittades, finns det konfigurationer kvar i databasen från både webbplatser och butiker som har tagits bort.

    code language-none
    In WebsiteRepository.php line 110:
    
        The website with id X that was requested wasn't found. Verify the website and try again.
    

    Kör den här MySQL-frågan och verifiera att webbplatsen inte kan hittas:

    code language-none
    select distinct scope_id from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
    
  6. Kör den här MySQL-satsen för att ta bort ogiltiga rader från webbplatskonfigurationen:

    code language-none
    delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
    

Relaterad läsning

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f