Ich habe den Katalog erfolgreich von Magento 1.9.2.3 auf Magento 2.0.2 migriert. Nach der Migration habe ich den Befehl erneut indiziert php bin/magento indexer:reindex
.
Alles wird erfolgreich neu indiziert, mit Ausnahme der Indizes catalog_category_product
und catalog_product_category
, die No such entity.
in der Shell und Benachrichtigung Reindex Required
in admin zurückkehren. Ich habe var/log/
aber keine Fehler geprüft .
Infolgedessen werden Produkte zu Kategorien im Backend hinzugefügt, aber die Kategorien werden im Frontend leer angezeigt.
Was könnte dieses Problem verursachen? Wie kann ich debuggen?
magento2
reindex
magento-2.0
migration
Gerard de Visser
quelle
quelle
Antworten:
Zusätzlich zu Raphael:
Ich habe diesen Code mit einer Änderung des Exception-Konstruktors für Debug-Zwecke (entweder durch xdebug oder alte Dumps) getestet. Ändern Sie vorerst das Konstrukt der Ausnahme (die Datei ist
\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
)Gehen Sie danach einen Stapel hoch und überprüfen Sie die angegebenen Argumente (die Argumente sind auch im Debug-Backtrace verfügbar, aber das Ablegen von Magento-Objekten ist nicht wirklich browserfreundlich).
Kam zu dem Schluss, dass es sich um den Ort handelte, an dem
storeGroupRepository
die Gruppen-ID nicht gefunden wurde. Tauchte in die Filialtabellen ein und sah einige Zeilen in der Filialtabelle, die auf eine referenziertenstore_group
, die nicht in derstore_group
Tabelle enthalten war ( Filialgruppe in relevanter Tabelle nicht vorhanden).Die fehlerhaften Geschäftszeilen wurden entfernt und der Fehler ist seitdem verschwunden.
Beachten Sie jedoch, dass es sich auch um eine andere Tabelle oder einen anderen Grund handeln kann. Zum Beispiel Website, Speicher selbst oder Speichergruppe in diesem Fall. Das ist also immer eine kleine Suche, die Sie selbst durchführen müssen.
Fand auch heraus, dass es ziemlich viele Verweise auf diese Läden gab und entfernte sie auch manuell in der Datenbank. Dies kann eine mühsame Arbeit sein, aber es wird das Problem lösen.
Und vergessen Sie nicht, Ihre Hacks zu entfernen.
quelle
Ich bin mir nicht sicher, ob dies zu spät zum Hinzufügen ist, aber als ich dies hatte, schien es durch einige Entitäts-IDs verursacht zu sein, die auf 0 gesetzt werden mussten.
Dieses Skript hat bei mir funktioniert:
Ich hoffe es hilft.
quelle
Ok also die
No such entity.
Fehlermeldung kommt von\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
.Diese Klasse ist eine benutzerdefinierte Ausnahmeklasse von Magento und wird in Magento 2 häufig verwendet.
Wann immer Sie Code sehen wie:
Oder
Diese Klasse wird verwendet.
Das Problem in Ihrem Fall ist, dass es schwierig ist herauszufinden, wo diese Ausnahme ausgelöst wird.
Um es ein wenig einzugrenzen, können Sie mit dem Debuggen der beiden Klassen beginnen, die sich auf Ihre fehlgeschlagenen Indizes beziehen:
Magento\Catalog\Model\Indexer\Category\Product
=> catalog_category_product indexMagento\Catalog\Model\Indexer\Product\Category
=> catalog_product_category indexGlücklicherweise erweitert der zweite den ersten, sodass Sie einen Ausgangspunkt haben.
Beachten Sie, dass jede dieser Indexer-Klassen Aktionszeilenklassen verwendet, um die Neuindizierung zu verarbeiten:
Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
Magento\Catalog\Model\Indexer\Category\Product\Action\Rows
Hier sollten Sie mit dem Debuggen beginnen, da diese Aktionszeilenklassen die direkten Klassen sind, die diese beiden Indizes neu indizieren.
Ich hoffe wirklich, dass es Ihnen helfen wird, Ihr Problem zu finden.
quelle
Das hat für mich funktioniert, nachdem ich alles versucht hatte.
Angenommen, Ihre Site befindet sich in
Developer Mode
, können Sie sie in denProduction Mode
Cache ändern, ihn leeren / leeren und dann wieder in den Cache wechselnDeveloper Mode
.Ich hatte dieses Problem im Front-End, als ich kürzlich die Datenbank von einem Server auf einen anderen verschoben habe. Ich habe es geschafft, auf diese Weise zu lösen.
HOFFNUNG, DAS HILFT EINEM.
quelle
Im Grunde das gleiche
Magento 2 - Moving Site - 'Keine solche Einheit'
cd /magento-root-path/var
rm -rf *
cd ../
php bin/magento setup:upgrade
rm -rf ./var/di
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
chown -R www-data
.quelle
Dieser Fehler betraf in meinem Fall ein Setup für mehrere Geschäfte und Domänen. Magento schneidet Geschäftscodes ab. Wenn Sie Domains zu Geschäftscodes zuordnen, vergewissern Sie sich, dass der Geschäftscode mit dem in index.php angegebenen Routing übereinstimmt (oder wo immer Sie ihn zuordnen). Im Admin Check unter "Stores" > " All Stores ". Überprüfen Sie Ihre Website, Store & Store View Store-Codes.
Sobald ich feststellte, dass Magento den von mir eingegebenen Geschäftscode abgeschnitten und die gleiche Anpassung im Mapping vorgenommen hatte, fing alles wieder an zu funktionieren.
quelle