Migrei com sucesso o catálogo do Magento 1.9.2.3 para o Magento 2.0.2. Após a migração, eu fiz reindex usando o comando php bin/magento indexer:reindex
.
Tudo é reindexado com sucesso, exceto índices catalog_category_product
e catalog_product_category
, retornando No such entity.
no shell e notificação Reindex Required
no admin. Eu verifiquei, var/log/
mas sem erros.
Como resultado, os produtos são adicionados às categorias no back-end, mas as categorias aparecem vazias no front-end.
O que pode causar esse problema? Como posso depurar?
magento2
reindex
magento-2.0
migration
Gerard de Visser
fonte
fonte
Respostas:
Além de Rafael:
Eu depurei esse código alterando o construtor de exceção para fins de depuração (por xdebug ou despejos antigos). Altere a construção da exceção por enquanto (o arquivo é
\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
)Depois disso, suba uma pilha e verifique os argumentos fornecidos (os argumentos também estão disponíveis no backtrace de depuração, mas despejar objetos magento não é realmente amigável ao navegador).
Chegou à conclusão de que estava no
storeGroupRepository
local em que não conseguia encontrar o ID do grupo. Mergulhou nas tabelas da loja e viu algumas linhas na tabela da loja que faziam referência a umastore_group
que não estava nastore_group
tabela (o grupo de lojas não existe na tabela relevante).Removidas as linhas defeituosas da loja e o erro desapareceu desde então.
Mas lembre-se de que também pode estar em uma tabela / outro motivo. por exemplo, site, loja própria ou grupo de lojas nesse caso. Portanto, essa é sempre uma pequena pesquisa que você deve realizar.
Também descobri que havia muitas referências a essas lojas e também as removemos manualmente no banco de dados. Isso pode ser um trabalho tedioso, mas resolverá o problema.
E não se esqueça de remover seus hacks.
fonte
Não tenho certeza se é tarde demais para adicionar, mas quando eu o tive, parecia ter sido causado por alguns IDs de entidades que precisavam ser definidos como 0.
Este script funcionou para mim:
Espero que ajude.
fonte
Ok, então a
No such entity.
mensagem de erro vem\lib\internal\Magento\Framework\Exception\NoSuchEntityException.php
.Esta classe é uma classe de exceção personalizada do Magento e é muito usada no Magento 2.
Sempre que você vir código como:
Ou
Esta classe está sendo usada.
O problema no seu caso é que é difícil descobrir de onde essa exceção está sendo lançada.
Portanto, para restringir um pouco, você pode começar a depurar as duas classes relacionadas aos seus índices que falham:
Magento\Catalog\Model\Indexer\Category\Product
=> índice catalog_category_productMagento\Catalog\Model\Indexer\Product\Category
=> índice catalog_product_categoryFelizmente, o segundo estende o primeiro, então você tem um ponto de partida.
Você deve ter em mente que cada classe indexadora usa classes de linhas de ação para processar a reindexação:
Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
Magento\Catalog\Model\Indexer\Category\Product\Action\Rows
Para mim, é aí que você deve começar a depurar, pois essas classes de linha de ação são as classes diretas que estão reindexando esses dois índices.
Eu realmente espero que ajude você a encontrar o seu problema.
fonte
Isso funcionou para mim depois de tentar tudo.
Supondo que seu site esteja
Developer Mode
, você pode alterá-loProduction Mode
e limpar / liberar cache e depois voltar paraDeveloper Mode
.Eu tive esse problema no front-end, pois recentemente movi o banco de dados de um servidor para outro. Eu consegui resolver dessa maneira.
Espero que isso ajude alguém.
fonte
Basicamente o mesmo
Magento 2 - Site em movimento - 'Nenhuma entidade'
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
.fonte
Este erro, no meu caso, foi para uma instalação de vários repositórios e vários domínios. Magento trunca códigos de loja. Se você estiver mapeando domínios para armazenar códigos, verifique se o código da loja corresponde ao roteamento especificado em index.php (ou onde quer que você mapeie). Na administração, verifique em "Lojas" > " Todas as lojas ". Verifique seu site, armazene e visualize os códigos de loja.
Depois que percebi que o Magento truncou o código da loja que havia inserido e fiz o mesmo ajuste no mapeamento, tudo começou a funcionar novamente.
fonte