Magento 2 reindex retorna Nenhuma entidade


14

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_producte catalog_product_category, retornando No such entity.no shell e notificação Reindex Requiredno 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?


Respostas:


7

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)

$trace = debug_backtrace();
var_dump($trace[1]['class'] . '::' . $trace[1]['function'] . '('.$trace[1]['line'] .')';
die();

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 storeGroupRepositorylocal 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 uma store_groupque não estava na store_grouptabela (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.


por que você não usa o xdebug?
Lucas

@TimVroom Tenho também mesmo error.Please ajuda me magento.stackexchange.com/q/236187/24878
akgola

11

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:

SET FOREIGN_KEY_CHECKS=0;
UPDATE `store` SET store_id = 0 WHERE code='admin';
UPDATE `store_group` SET group_id = 0 WHERE name='Default';
UPDATE `store_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

Espero que ajude.


isso me ajudou muito, obrigado por compartilhar!
Fev

Isso também funcionou para mim :)
Owen

3

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:

catch (NoSuchEntityException $e)

Ou

throw NoSuchEntityException;

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_product
  • Magento\Catalog\Model\Indexer\Product\Category=> índice catalog_product_category

Felizmente, 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.


Oi @Raphael, eu tenho problema semelhante para a criação cliente após migration.Please ajuda me magento.stackexchange.com/q/236187/24878
akgola

0

Isso funcionou para mim depois de tentar tudo.

Supondo que seu site esteja Developer Mode, você pode alterá-lo Production Modee limpar / liberar cache e depois voltar para Developer 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.



0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.