Magento 2 reindex devuelve No existe tal entidad

14

He migrado con éxito el catálogo de Magento 1.9.2.3 a Magento 2.0.2. Después de la migración, reindexé usando el comando php bin/magento indexer:reindex.

Todo se vuelve a indexar con éxito, excepto los índices catalog_category_producty catalog_product_category, regresando No such entity.en shell y notificación Reindex Requireden admin. Lo he comprobado var/log/pero no hay errores.

Como resultado, los productos se agregan a categorías en el back-end, pero las categorías aparecen vacías en la interfaz.

¿Qué puede causar este problema? ¿Cómo puedo depurar?

Gerard de Visser
fuente
básicamente el mismo magento.stackexchange.com/questions/102739/…
Patrick-Peng

Respuestas:

7

Además de Rafael:

Depuré este código alterando el constructor de excepciones para propósitos de depuración (ya sea por xdebug o por viejos volcados). Altere la construcción de la excepción por ahora (el archivo es \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php)

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

Después de eso, suba una pila y verifique los argumentos dados (los argumentos también están disponibles en la traza inversa de depuración, pero descargar objetos magento no es realmente amigable para el navegador).

Llegué a la conclusión de que estaba en el lugar storeGroupRepositorydonde no podía encontrar la identificación del grupo. Se sumergió en las tablas de la tienda y vi algunas líneas en la tabla de la tienda que hacían referencia a una store_groupque no estaba en la store_grouptabla (el grupo de la tienda no existe en la tabla relevante).

Se eliminaron las líneas de almacenamiento defectuosas y el error desapareció desde entonces.

Pero, tenga en cuenta que también puede estar en una tabla diferente / otra razón. por ejemplo, sitio web, tienda propia o grupo de tiendas en este caso. Entonces esa es siempre una pequeña búsqueda que debes realizar tú mismo.

También descubrí que había muchas referencias a estas tiendas y también las eliminé manualmente en la base de datos. Este puede ser un trabajo tedioso pero resolverá el problema.

Y no olvides eliminar tus hacks.

TimVroom
fuente
¿por qué no usas xdebug en su lugar?
Lucas
@TimVroom También tengo el mismo error. Ayúdame magento.stackexchange.com/q/236187/24878
akgola
11

No estoy seguro de si esto es demasiado tarde para agregar, pero cuando tuve esto, parecía ser causado por algunos identificadores de entidad que debían establecerse en 0.

Este script funcionó para mí:

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 eso ayude.

Adam Stacey
fuente
Esto me ayudó mucho, ¡gracias por compartir!
favor
Esto también funcionó para mí :)
Owen
3

Ok, entonces el No such entity.mensaje de error proviene \lib\internal\Magento\Framework\Exception\NoSuchEntityException.php.

Esta clase es una clase de excepción personalizada de Magento y se usa mucho en Magento 2.

Cada vez que vea un código como:

catch (NoSuchEntityException $e)

O

throw NoSuchEntityException;

Esta clase está siendo utilizada.

El problema en su caso es que es difícil averiguar desde dónde se lanza esa excepción.

Entonces, para reducirlo un poco, puede comenzar a depurar las dos clases relacionadas con sus índices que fallan:

  • Magento\Catalog\Model\Indexer\Category\Product=> catalog_category_product index
  • Magento\Catalog\Model\Indexer\Product\Category=> catalog_product_category index

Afortunadamente, el segundo extiende el primero para que tenga un punto de partida.

Debe tener en cuenta que cada una de estas clases de indexador utiliza clases de filas de acción para procesar la reindexación:

  • Magento\Catalog\Model\Indexer\Product\Category\Action\Rows
  • Magento\Catalog\Model\Indexer\Category\Product\Action\Rows

Para mí, ahí es donde debe comenzar a depurar, ya que esas clases de filas de acción son las clases directas que reindexan esos dos índices.

Realmente espero que te ayude a encontrar tu problema.

Raphael en Digital Pianism
fuente
Hola @Raphael, tengo un problema similar para la creación de clientes después de la migración. Ayúdame magento.stackexchange.com/q/236187/24878
akgola
0

Esto funcionó para mí después de probar todo.

Suponiendo que su sitio está instalado Developer Mode, puede cambiarlo Production Modey borrar / vaciar la caché y luego volver a cambiar a Developer Mode.

Tuve este problema en la parte frontal, ya que recientemente moví la base de datos de un servidor a otro. He logrado resolver de esta manera.

ESPERO QUE ESTO AYUDE A ALGUIEN.

Thowzif
fuente
0

Este error, en mi caso, fue para una configuración de varias tiendas y varios dominios. Magento trunca los códigos de la tienda. Si está asignando dominios a códigos de tienda, asegúrese de que el código de tienda coincida con el enrutamiento especificado en index.php (o donde sea que asigne). En el administrador verifique en "Tiendas" > " Todas las tiendas ". Verifique su sitio web, tienda y vea los códigos de tienda.

Una vez que me di cuenta de que Magento truncó el código de la tienda que había ingresado e hice el mismo ajuste en el mapeo y todo comenzó a funcionar nuevamente.

Taylor Hunt
fuente