Ursache
Die core_config_data
enthält Konfigurationen für eine Store-ID oder Website-ID, die nicht mehr in der Datenbank vorhanden ist. Dies tritt auf, wenn Sie eine Datenbanksicherung aus einer anderen Instanz/Umgebung importiert haben und die Konfigurationen für diese Bereiche in der Datenbank verbleiben, auch wenn die zugehörigen Stores/Websites gelöscht wurden.
Auflösung
Wenn Sie nur über eine Website verfügen, gilt der zweite Test für die Websites nicht. Sie müssen nur auf Geschäfte testen.
Um dieses Problem zu beheben, identifizieren Sie die ungültigen Zeilen, die von diesen Konfigurationen übrig bleiben.
-
SSH auf den Server übertragen und diesen Befehl ausführen:
bin/magento
-
Die Fehlermeldung kann anzeigen, welche Zeilen und Tabellen von gelöschten Sites in der Datenbank verbleiben. Im Folgenden finden Sie beispielsweise einen Fehler, der angibt, dass der angeforderte Speicher nicht gefunden wurde:
... In StoreRepository.php line 112: The store that was requested wasn't found. Verify the store and try again.
-
Führen Sie diese MySQL-Abfrage aus, um zu überprüfen, ob der Speicher nicht gefunden werden kann. Dies wird durch die Fehlermeldung in Schritt 2 angezeigt.
select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Führen Sie die folgende MySQL-Anweisung aus, um die ungültigen Zeilen zu löschen:
delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Führen Sie diesen Befehl erneut aus:
bin/magento
Wenn Sie einen Fehler wie den folgenden erhalten, der anzeigt, dass die angeforderte Website mit der ID X nicht gefunden wurde, bleiben Konfigurationen von Websites sowie Stores in der Datenbank, die gelöscht wurden.
In WebsiteRepository.php line 110: The website with id X that was requested wasn't found. Verify the website and try again.
Führen Sie diese MySQL-Abfrage aus und stellen Sie sicher, dass die Website nicht gefunden werden kann:
select distinct scope_id from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
-
Führen Sie diese MySQL-Anweisung aus, um die ungültigen Zeilen aus der Website-Konfiguration zu löschen:
delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);