Cause
La table core_config_data
contient des configurations pour un ID de magasin ou un ID de site web qui n’existe plus dans la base de données. Cela se produit lorsque vous avez importé une sauvegarde de base de données à partir d’une autre instance ou d’un autre environnement et que les configurations de ces étendues restent dans la base de données, même si les magasins/sites web associés ont été supprimés.
Résolution
Si vous n’avez qu’un seul site web, le deuxième test pour les sites web ne s’applique pas et vous n’avez qu’à tester les magasins.
Pour résoudre ce problème, identifiez les lignes non valides restantes de ces configurations.
-
Envoyez le SSH au serveur et exécutez la commande suivante :
bin/magento
-
Le message d’erreur peut indiquer quelles lignes et tables restent dans la base de données à partir des sites supprimés. Par exemple, voici une erreur indiquant que le magasin demandé est introuvable :
... In StoreRepository.php line 112: The store that was requested wasn't found. Verify the store and try again.
-
Exécutez cette requête MySQL pour vérifier que le magasin est introuvable, ce qui est indiqué par le message d’erreur à l’étape 2.
select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Exécutez l’instruction MySQL suivante pour supprimer les lignes non valides :
delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Exécutez à nouveau cette commande :
bin/magento
Si vous obtenez une erreur telle que celle ci-dessous, qui indique que le site web portant l’ID X demandé est introuvable, cela signifie que certaines configurations restent dans la base de données à partir du ou des sites web, ainsi que des magasins, qui ont été supprimés.
In WebsiteRepository.php line 110: The website with id X that was requested wasn't found. Verify the website and try again.
Exécutez cette requête MySQL et vérifiez que le site web est introuvable :
select distinct scope_id from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
-
Exécutez cette instruction MySQL pour supprimer les lignes non valides de la configuration du site web :
delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);