Pim-community-dev: 2.1.8: Entrada duplicada para a chave 'searchunique_idx' ao importar produtos usando a CLI

Criado em 6 abr. 2018  ·  3Comentários  ·  Fonte: akeneo/pim-community-dev

Quando estou importando um feed com apenas um SKU e colunas de imagens no Akeneo usando a linha de comando, a importação falha com o seguinte comando:

[2018-04-06 15:35:24] batch.ERROR: Encountered an error executing the step: 
An exception occurred while executing 'INSERT INTO pim_catalog_completeness 
(ratio, missing_count, required_count, locale_id, channel_id, product_id) VALUES (?, ?, ?, ?, ?, ?)'
with params [100, 0, 1, 39, 1, 4404]:  
SQLSTATE[23000]: Integrity constraint violation: 
1062 Duplicate entry '1-39-4404' for key 'searchunique_idx' [] []

Alguém sabe o que pode estar causando esse problema? Ou como posso corrigi-lo? A parte estranha é que a chave sugere que também haveria um produto com ID 4404 no meu banco de dados nessa tabela, mas não há.

atualização: ao inspecionar mais, notei que o arquivo carregado pelo cliente tinha várias ocorrências do mesmo SKU. Será esta a causa deste problema? Essas coisas são feitas em uma única transação? (o que poderia explicar por que não consegui encontrar o ID de colisão no banco de dados).

Comentários muito úteis

Eu experimentei esse problema em 2 cenários.

Dados de importação duplicados
Sua sugestão está certa: quando você tem várias instâncias do mesmo sku em seu arquivo de importação, você recebe este erro.

Os índices do Elastic Search retêm os dados do produto removidos
O outro caso em que tive esse problema foi quando o elasticsearch manteve um registro de um produto excluído em seus índices e está de alguma forma 'alimentando' o script de integridade que é executado após a importação de modelos de produtos.
Isso foi causado pela remoção do modelo do produto após o qual a Akeneo não removeu todos os dados ES das variantes do produto subjacente ou porque eu removi um registro manualmente do banco de dados.
Não tenho certeza de qual dos dois causou isso, mas pode ser o segundo caso e então a culpa é minha.

no entanto foi muito difícil de depurar, pois não consegui encontrar nenhum registro duplicado desses produtos em nenhum lugar do meu banco de dados, nem importar arquivos.

A solução:
da linha de comando, jogue fora todos os índices ES:
bin/console akeneo:elasticsearch:reset-indexes
Então reconstrua:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

Todos 3 comentários

Eu experimentei esse problema em 2 cenários.

Dados de importação duplicados
Sua sugestão está certa: quando você tem várias instâncias do mesmo sku em seu arquivo de importação, você recebe este erro.

Os índices do Elastic Search retêm os dados do produto removidos
O outro caso em que tive esse problema foi quando o elasticsearch manteve um registro de um produto excluído em seus índices e está de alguma forma 'alimentando' o script de integridade que é executado após a importação de modelos de produtos.
Isso foi causado pela remoção do modelo do produto após o qual a Akeneo não removeu todos os dados ES das variantes do produto subjacente ou porque eu removi um registro manualmente do banco de dados.
Não tenho certeza de qual dos dois causou isso, mas pode ser o segundo caso e então a culpa é minha.

no entanto foi muito difícil de depurar, pois não consegui encontrar nenhum registro duplicado desses produtos em nenhum lugar do meu banco de dados, nem importar arquivos.

A solução:
da linha de comando, jogue fora todos os índices ES:
bin/console akeneo:elasticsearch:reset-indexes
Então reconstrua:
bin/console pim:product:index --all
bin/console pim:product-model:index --all

Obteve o mesmo problema. A solução fornecida pelo @wigman me ajudou. Obrigado
O problema aconteceu porque eu copiava o banco de dados de um ambiente para outro, o índice com certeza não era o mesmo.

A solução sugerida por @wigman funciona apenas para pequenas lojas com alguns milhares de produtos.
O comando bin/console akeneo:elasticsearch:reset-indexes remove tudo do índice e então você tem que esperar algum tempo até que os dados voltem. Se você tiver mais de 150 mil modelos de produtos e 1kk+ produtos, não é uma opção, porque a reindexação pode levar até 4 horas.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ronn0 picture ronn0  ·  4Comentários

a2xchip picture a2xchip  ·  5Comentários

Piotr-Borek picture Piotr-Borek  ·  5Comentários

henryktews picture henryktews  ·  4Comentários

jjanvier picture jjanvier  ·  4Comentários