Pomyślnie przeprowadziłem migrację katalogu z Magento 1.9.2.3 do Magento 2.0.2. Po migracji zrobiłem ponowne indeksowanie za pomocą polecenia php bin/magento indexer:reindex
.
Wszystko zostało pomyślnie zindeksowane, z wyjątkiem indeksów catalog_category_product
i catalog_product_category
powracających No such entity.
w powłoce i powiadomień Reindex Required
w adminie. Sprawdziłem, var/log/
ale nie ma błędów.
W rezultacie produkty są dodawane do kategorii w backendzie, ale kategorie są puste na frontonie.
Co może powodować ten problem? Jak mogę debugować?
magento2
reindex
magento-2.0
migration
Gerard de Visser
źródło
źródło
Odpowiedzi:
Oprócz Raphaela:
Debugowałem ten kod, zmieniając konstruktor wyjątków do celów debugowania (przez xdebug lub stare zrzuty). Zmień konstrukcję wyjątku na razie (plik jest
\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
)Następnie przejdź o jeden stos i sprawdź podane argumenty (argumenty są również dostępne w śladzie debugowania, ale zrzutowanie obiektów magento nie jest tak naprawdę przyjazne dla przeglądarki).
Doszedł do wniosku, że to
storeGroupRepository
tam, gdzie nie mógł znaleźć identyfikatora grupy. Zanurkowałem w tabelach sklepów i zobaczyłem kilka wierszy w tabeli sklepów, które odwoływały się do tych,store_group
których nie było wstore_group
tabeli (grupa sklepów nie istnieje w odpowiedniej tabeli).Usunięto wadliwe linie sklepu i od tego czasu błąd zniknął.
Pamiętaj jednak, że może to być także inna tabela / inny powód. na przykład witryna, sklep lub grupa sklepów w tym przypadku. To zawsze jest małe wyszukiwanie, które musisz wykonać sam.
Odkryłem również, że istnieje wiele odniesień do tych sklepów, a także usunąłem je ręcznie w db. Może to być żmudna praca, ale rozwiąże problem.
I nie zapomnij usunąć swoich hacków.
źródło
Nie jestem pewien, czy jest już za późno na dodanie, ale kiedy to miałem, wydawało się, że jest to spowodowane niektórymi identyfikatorami jednostek, które musiały być ustawione na 0.
Ten skrypt działał dla mnie:
Mam nadzieję, że to pomoże.
źródło
Ok, więc
No such entity.
pojawia się komunikat o błędzie\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
.Ta klasa jest niestandardową klasą wyjątków Magento i jest często używana w Magento 2.
Ilekroć widzisz kod taki jak:
Lub
Ta klasa jest używana.
Problem w twoim przypadku polega na tym, że trudno jest ustalić, skąd ten wyjątek jest zgłaszany.
Aby go nieco zawęzić, możesz rozpocząć debugowanie dwóch klas powiązanych z indeksami, które zawiodły:
Magento\Catalog\Model\Indexer\Category\Product
=> Catalog_category_product wskaźnikMagento\Catalog\Model\Indexer\Product\Category
=> indeks katalog_produktu_kategoriiNa szczęście drugi rozszerza pierwszy, więc masz jeden punkt początkowy.
Należy pamiętać, że każda z tych klas indeksujących używa klas wierszy akcji do przetworzenia ponownego indeksowania:
Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
Magento\Catalog\Model\Indexer\Category\Product\Action\Rows
Dla mnie właśnie tam powinieneś zacząć debugowanie, ponieważ te klasy wierszy akcji są klasami bezpośrednimi, które ponownie indeksują te dwa indeksy.
Naprawdę mam nadzieję, że pomoże ci to znaleźć twój problem.
źródło
TO DZIAŁAŁO DLA MNIE PO SPRÓBOWANIU WSZYSTKO.
Zakładając, że witryna jest włączona
Developer Mode
, możesz ją zmienić naProduction Mode
i wyczyścić / opróżnić pamięć podręczną, a następnie przełączyć z powrotem naDeveloper Mode
.Miałem ten problem w interfejsie, ponieważ niedawno przeniosłem bazę danych z jednego serwera na inny. W ten sposób udało mi się rozwiązać.
NADZIEJA, KTÓRA POMAGA NIEKTÓREJ.
źródło
Zasadniczo to samo
Magento 2 - Przeprowadzka - „Brak takiego podmiotu”
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
.źródło
Ten błąd, w moim przypadku, dotyczy konfiguracji wielu sklepów i wielu domen. Magento obcina kody sklepów. Jeśli odwzorowujesz domeny na kody sklepu, upewnij się, że kod sklepu pasuje do routingu określonego w index.php (lub gdziekolwiek mapujesz). W panelu administracyjnym zaznacz kolejno opcje „Sklepy” > „ Wszystkie sklepy ”. Sprawdź swoją stronę internetową, przechowuj i przechowuj Zobacz kody sklepów.
Kiedy zdałem sobie sprawę, że Magento obciął kod sklepu, który wprowadziłem, dokonałem tej samej korekty mapowania i wszystko zaczęło działać ponownie.
źródło