Error de paso Eav de migración de datos

11

¿Alguien tiene este problema?

migración de datos> Paso EAV

SQLSTATE [23000]: Infracción de restricción de integridad: 1062 Entrada duplicada '1-Migration_Default' para la clave 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME'

Ricardo
fuente
¿Has encontrado alguna solución para esto?
Gaurav Agrawal

Respuestas:

4

Este error se produce cuando la herramienta de migración no puede transferir datos (por ejemplo, debido a violaciones de integridad) sin retroceder, y se ejecuta nuevamente. Intenta crear el conjunto de atributos "Migration_Default" y falla, porque ya está presente en la base de datos.

Lo que tienes que hacer es:

1) Restaure su base de datos Magento 2.0 a partir de una copia que (con suerte) realizó antes de ejecutar la herramienta de migración.

2) Ejecute la herramienta de migración nuevamente y verifique el primer error en el que falla. En mi caso fue:

[PDOException]                                                                                                              
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'home-1' for key 'URL_REWRITE_REQUEST_PATH_STORE_ID'

3) Solucione el problema (tuve que eliminar manualmente una fila en la base de datos).

Repita los pasos hasta que haya borrado todos los errores y vea el dulce mensaje que suena:

Migration completed
Mateusz
fuente
Estoy enfrentando el mismo problema, ¿dónde puedo cambiar este valor?
Purushotam Sharma
1
Cual valor? ¿Cómo eliminar una fila de base de datos que está causando una violación de la restricción de integridad? Mira el nombre del índice. En mi caso fue "URL_REWRITE_REQUEST_PATH_STORE_ID". La primera parte es el nombre de la tabla con el registro ofensivo. En mi caso fue url_rewrite (o más precisamente my-prefix_url_rewrite). REQUEST_PATH y STORE_ID son dos columnas que, cuando se unen, deben ser únicas. En mi caso, la herramienta de migración intentaba insertar dos registros con "inicio" en request_path y 1 en store_id. Tuve que quitar el primero.
Mateusz
@Mateusz, si usamos el comando, -r, ¿no restablecerá la base de datos y comenzará desde el principio? cada vez que restaurar db es demasiado tiempo, los procesos se
demoran
@jafarpinjar (o cualquiera que esté mirando esto) Sí, eso es correcto. Necesita restaurar la base de datos cada vez. De la documentación de Magento 2: "Para forzar que la Herramienta de migración de datos se ejecute desde el principio, use el argumento --reset. En ese caso, le recomendamos que restaure el volcado de la base de datos de Magento 2 para evitar la duplicación de datos migrados previamente".
Wack
@Mateusz, tengo este error, "Infracción de restricción de integridad: 1062 Entrada duplicada '0' para la clave 'WISHLIST_CUSTOMER_ID'"
jafar pinjar
2

Encontré esta solución que resolvió este problema para mí https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437

La solución es cambiar el nombre de todos los valores que contengan el nombre "Predeterminado" en el campo "atributo_valor_nombre" de la tabla eav_attribute_set a "Predeterminado_x" en la base de datos de Magento 1 y ejecutar la migración desde cero.

En mi caso, había 9 registros con el nombre "Predeterminado". Así que les cambié el nombre a Default_1 a Default_9 y funcionó perfectamente.

Alfredo Lanzetta
fuente
Gracias, esto también funcionó para mí. A continuación, obtuve un error de clave duplicada relacionado EAV_ATTRIBUTE_GROUP_ATTRIBUTE_SET_ID_ATTRIBUTE_GROUP_CODEy lo resolví con un enfoque similar:UPDATE eav_attribute_group SET attribute_group_name = CONCAT(attribute_group_name, "_", attribute_set_id) WHERE attribute_group_name = "General";
WackGet
@Alfredo Lanzetta, migré con éxito a M2, pero parece que tengo un problema con la opción de diseño personalizado. Me gustaría que tu información sea la misma. ¿Podrías echar un vistazo a mi pregunta?
CodeForGood
1

En mi caso : me sucedió y tuve que importar una copia de seguridad de mi base de datos magento 2 antes de volver a cargar la migración.

En su caso : tal vez tuvo que volver a cargar la migración de datos por segunda vez.

Kevin Thomas
fuente
hola @ Kevin, ¿el comando de reinicio no restablecerá la configuración? no comenzará desde el principio? cada vez que necesita restablecer el db?
jafar pinjar
@jafarpinjar (o cualquiera que esté mirando esto) Sí, eso es correcto. Necesita restaurar la base de datos cada vez. De la documentación de Magento 2: "Para forzar que la Herramienta de migración de datos se ejecute desde el principio, use el argumento --reset. En ese caso, le recomendamos que restaure el volcado de la base de datos de Magento 2 para evitar la duplicación de datos migrados previamente".
Wack
1

Para solucionar este problema,

  1. Primero debe verificar los conjuntos de atributos ya migrados.
  2. Luego elimine esos conjuntos de atributos, excepto el predeterminado.

Puede hacerlo a través de su aplicación o interfaz de consulta SQL.

DELETE FROM eav_attribute_set WHERE attribute_set_name != 'Default';
Stevie G
fuente
1

Verifique con su base de datos de migración Magento 2. A veces no cambiamos el nombre de la base de datos en la herramienta de migración de datos.

Vuelva a instalar la instancia nueva de Magento y agregue correctamente el nombre de la base de datos en la herramienta de migración de datos

Arunprabakaran M
fuente
0

Data-Migration-Tool no recibe datos de la fuente en utf8.
Aquí hay una solución simple a este problema:

Editar: vendor/magento/data-migration-tool/src/Migration/ResourceModel/Adapter/Mysql.php

public function __construct(
    \Magento\Framework\DB\Adapter\Pdo\MysqlFactory $adapterFactory,
    \Magento\Framework\DB\Ddl\TriggerFactory $triggerFactory,
    array $config
) {
    $config['initStatements'] = 'SET NAMES utf8'; // +
    $configData['config'] = $config;
    $this->resourceAdapter = $adapterFactory->create($configData);
    $this->setForeignKeyChecks(0);
    $this->triggerFactory = $triggerFactory;
}

GitHub

Polar
fuente
¿Puede explicar por qué esto haría una diferencia al duplicar una clave primaria?
domdambrogia
0

En mi experiencia, hay datos de muestra instalados. Entonces, he hecho los siguientes pasos.

  1. Se me cayó la base de datos
  2. Luego reinstale magento 2 nuevamente sin datos de muestra.

Entonces, puedo migrar.

usuario1554046
fuente
0

Se solucionó mi problema con el siguiente sql:

Infracción de restricción de integridad: 1062 Entrada duplicada '4-Images' para clave - Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

Entonces intenta algo

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
Desarrollador MHK
fuente