Erro na etapa Eav da migração de dados

11

Alguém está tendo esse problema?

migração de dados> Etapa EAV

SQLSTATE [23000]: Violação de restrição de integridade: 1062 Entrada duplicada '1-Migration_Default' para a chave 'EAV_ATTRIBUTE_SET_ENTITY_TYPE_ID_ATTRIBUTE_SET_NAME'

Richard
fonte
Você encontrou alguma solução para isso?
Gaurav Agrawal 15/09

Respostas:

4

Este erro ocorre quando a ferramenta de migração falha na transferência de dados (por exemplo, devido a violações de integridade) sem retroceder e é executada novamente. Ele tenta criar o conjunto de atributos "Migration_Default" e falha, porque já está presente no banco de dados.

O que você precisa fazer é:

1) Restaure seu banco de dados Magento 2.0 a partir de uma cópia que você (espero) tenha feito antes de executar a ferramenta de migração.

2) Execute a ferramenta de migração novamente e verifique o primeiro erro em que ela falha. No meu caso, foi:

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

3) Corrija o problema (tive que remover manualmente uma linha no banco de dados).

Repita as etapas até que você apague todos os erros e veja a doce mensagem:

Migration completed
Mateusz
fonte
Estou enfrentando o mesmo problema, onde posso alterar esse valor?
Purushotam Sharma
11
Qual valor? Como remover uma linha do banco de dados que está causando uma violação de restrição de integridade? Veja o nome do índice. No meu caso, era "URL_REWRITE_REQUEST_PATH_STORE_ID". A primeira parte é o nome da tabela com o registro incorreto. No meu caso, era url_rewrite (ou mais precisamente my-prefix_url_rewrite). REQUEST_PATH e STORE_ID são duas colunas que, quando reunidas, precisam ser únicas. No meu caso, a ferramenta de migração estava tentando inserir dois registros com "home" em request_path e 1 em store_id. Eu tive que remover o primeiro.
Mateusz
@ Matusz, se usarmos o comando, -r ele não redefinirá o db e começará do início? cada vez db restauração é muito tempo tomada processs
Jafar pinjar
@jafarpinjar (ou qualquer outra pessoa olhando isso) Sim, isso está correto. Você precisa restaurar o banco de dados sempre. Na documentação do Magento 2: "Para forçar a execução da ferramenta de migração de dados desde o início, use o argumento --reset. Nesse caso, recomendamos que você restaure o dump do banco de dados do Magento 2 para evitar a duplicação de dados migrados anteriormente".
WackGet
@Mateusz, tenho este erro, "Violação de restrição de integridade: 1062 Entrada duplicada '0' para a chave 'WISHLIST_CUSTOMER_ID'"
jafar pinjar
2

Encontrei esta solução que resolveu esse problema para mim https://github.com/magento/data-migration-tool/issues/235#issuecomment-321923437

A solução é renomear todos os valores que contêm o nome "Padrão" no campo "attribute_value_name" da tabela eav_attribute_set para "Default_x" no banco de dados Magento 1 e executar a migração do zero.

No meu caso, havia 9 registros com o nome "Padrão". Então, renomeei-os para Default_1 para Default_9 e funcionou perfeitamente!

Alfredo Lanzetta
fonte
Obrigado, isso funcionou para mim também. Em seguida, recebi um erro de chave duplicada relacionado EAV_ATTRIBUTE_GROUP_ATTRIBUTE_SET_ID_ATTRIBUTE_GROUP_CODEe resolvi isso por uma abordagem semelhante:UPDATE eav_attribute_group SET attribute_group_name = CONCAT(attribute_group_name, "_", attribute_set_id) WHERE attribute_group_name = "General";
WackGet
@ Alfredo Lanzetta, migrei com sucesso para o M2, mas parece ter um problema com a opção de layout personalizado. Eu gostaria que suas idéias fossem sobre o mesmo. Poderia, por favor, dar uma olhada na minha pergunta?
CodeForGood 24/03
1

No meu caso : aconteceu comigo e eu tive que importar um backup do meu banco de dados magento 2 antes de recarregar a migração.

No seu caso : talvez você precise recarregar a migração de dados pela segunda vez.

Kevin Thomas
fonte
oi @Kevin, o comando reset não redefinirá as configurações? não vai começar do começo? toda vez que precisar redefinir o db?
Jafar pinjar
@jafarpinjar (ou qualquer outra pessoa olhando isso) Sim, isso está correto. Você precisa restaurar o banco de dados sempre. Na documentação do Magento 2: "Para forçar a execução da ferramenta de migração de dados desde o início, use o argumento --reset. Nesse caso, recomendamos que você restaure o dump do banco de dados do Magento 2 para evitar a duplicação de dados migrados anteriormente".
WackGet
1

Para corrigir esse problema,

  1. Primeiro, você precisa verificar os conjuntos de atributos já migrados.
  2. Em seguida, exclua esses conjuntos de atributos, exceto o padrão.

Você pode fazer isso através do aplicativo ou interface de consulta SQL.

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

Verifique com o banco de dados de migração Magento 2. Às vezes, não alteramos o nome do banco de dados na ferramenta de migração de dados.

Reinstale a nova instância do Magento e adicione corretamente o nome do banco de dados na ferramenta de migração de dados

Arunprabakaran M
fonte
0

A Ferramenta de Migração de Dados não recebe dados da fonte no utf8.
Aqui está uma solução simples para esse 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
fonte
Você pode explicar por que isso faria diferença na duplicação de uma chave primária?
22618 domdambrogia
0

Na minha experiência, existem dados de amostra instalados. Então, eu fiz os seguintes passos.

  1. Eu larguei o banco de dados
  2. Em seguida, reinstale o magento 2 novamente sem dados de amostra.

Então, eu posso migrar.

user1554046
fonte
0

Corrigido meu problema com o seguinte sql:

Violação de restrição de integridade: 1062 Entrada duplicada '4-Imagens' para chave - Magento 2

delete from eav_attribute_group WHERE attribute_group_name = 'Images';

Então tente algo

delete from eav_attribute_group WHERE attribute_group_name = 'Home';
Desenvolvedor MHK
fonte