Implementatie mislukt: er zijn geen opdrachten gedefinieerd in de naamruimtefout 'cache'

WARNING
Maak eerst een back-up van de database als u dit doet op een live productiesite, voordat u deze stappen uitvoert.

Dit artikel verstrekt een oplossing voor de kwestie wanneer uw plaatsing ontbreekt en één van de fouten in het logboek als dit kijkt:

[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.

Betrokken producten en versies

Adobe Commerce op cloudinfrastructuur 2.4.x

Probleem

Stappen om te reproduceren:

Poging om te implementeren.

Verwachte resultaten :

De implementatie is voltooid.

Ware resultaten :

U kunt niet correct implementeren. In de logboeken ziet u een plaatsingsfout met een bericht gelijkend op het volgende Er zijn geen bevelen in het geheime voorgeheugen namespace.

Oorzaak

De core_config_data lijst bevat configuraties voor een opslagidentiteitskaart of websiteidentiteitskaart die niet meer in het gegevensbestand bestaat. Dit gebeurt wanneer u een databaseback-up hebt geïmporteerd uit een andere instantie/omgeving en de configuraties voor die bereikinstellingen in de database blijven, hoewel de bijbehorende opslag(en)/website(s) zijn verwijderd.

Oplossing

Als u maar één website hebt, is de tweede test voor de websites niet van toepassing en hoeft u alleen maar te testen op winkels.

Om dit probleem op te lossen, identificeer de ongeldige rijen die van die configuraties worden verlaten.

  1. SSH aan de server en stel dit bevel in werking:

    bin/magento

  2. Het foutbericht geeft mogelijk aan welke rijen en tabellen in de database blijven van verwijderde sites. Hieronder ziet u bijvoorbeeld een fout die aangeeft dat de gevraagde opslag niet is gevonden:

    code language-...
    In StoreRepository.php line 112:
    
    The store that was requested wasn't found. Verify the store and try again.
    
  3. Voer deze MySql-query uit om te controleren of de winkel niet kan worden gevonden. Dit wordt aangegeven door het foutbericht in stap 2.

    code language-sql
    select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  4. Voer de volgende MySql-instructie uit om de ongeldige rijen te verwijderen:

    code language-sql
    delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  5. Voer deze opdracht opnieuw uit:

    bin/magento

    Als u een fout krijgt zoals hieronder die erop wijst dat de website met identiteitskaart X die werd gevraagd niet werd gevonden u nog configuraties hebt in de database van website(s) en winkel(s) die zijn verwijderd.

    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.
    

    Voer deze MySql-query uit en controleer of de website niet is gevonden:

    code language-sql
    select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  6. Voer deze MySql-instructie uit om de ongeldige rijen uit de websiteconfiguratie te verwijderen:

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

Voer de opdracht bin/magento opnieuw uit om te bevestigen dat de oplossing heeft gewerkt. U zou niet meer de fouten moeten zien en met succes kunnen opstellen.

Gerelateerde lezing

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