Como remover um sku duplicado via banco de dados?

12

Eu recebo este erro ao tentar editar e salvar alguns dos meus produtos Magento via admin: " O valor do atributo" SKU "deve ser exclusivo ."

Quando visualizo meus produtos no Magento admin, não é possível encontrar um sku duplicado, mas quando executo uma exportação de produto, na verdade existem alguns produtos com o mesmo sku. Em teoria, o Magento nunca deveria ter permitido que isso acontecesse, mas, infelizmente, estou lidando com um grupo de produtos bastante grande e maduro (com mais de 3 anos) que parece conter os restos de bugs e peculiaridades anteriores do Magento.

Acho que a única maneira de corrigir esse problema é remover manualmente um dos skus duplicados do banco de dados, mas não tenho certeza da melhor / mais segura maneira de fazer isso. Eu tenho praticamente 0 experiência trabalhando com bancos de dados, então qualquer ajuda é apreciada.

Amanda
fonte

Respostas:

7
  1. Backup de seu catalog_product_entitybanco de dados tabela ( ver: /programming//a/6683000/4457531 )

  2. Verifique se skus duplicados estão presentes na catalog_product_entitytabela com esta consulta:

    SELECT COUNT(*), sku
    FROM `catalog_product_entity`
    GROUP BY sku HAVING COUNT(*) > 1
  3. Remover entradas duplicadas

    • Remova novos produtos duplicados e mantenha o sku mais antigo com:

      DELETE catalog_product_entity FROM catalog_product_entity
      LEFT OUTER JOIN (
          SELECT MIN(entity_id) as id, sku
          FROM catalog_product_entity
          GROUP BY sku
      ) as t1
      ON catalog_product_entity.entity_id = t1.id
      WHERE t1.id IS NULL
    • Para remover produtos duplicados antigos e manter o novo sku, substitua MINporMAX na subconsulta join

      LEFT OUTER JOIN (
          SELECT MAX(entity_id) as id, sku
          ...
      )
Nolwennig
fonte
3

Você provavelmente não possui SKUs duplicados no seu banco de dados, eles só aparecem no magento 1.9.2.x quando você executa uma exportação.

Tente o seguinte:

https://github.com/baconl/Magento-1.9.2.1-duplicate-sku-fix

É uma correção temporária até que a equipe principal do magento conserte,

baconl
fonte
1

Você precisará investigar e limpar os esquis inesperados. Primeiro encontre o skus em questão, então você precisará limpá-lo no banco de dados com a consulta abaixo:

DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ..., 'SKU1654');

observe que eu recomendo que você faça isso se tiver certeza do que faz, isso não será reversível.

Nicolas D
fonte
Tenha em mente para fazer backup de seu db antes de aplicar qualquer consulta sensata diretamente
Nolwennig
1

Por favor, execute o script abaixo através do banco de dados

DELETE FROM `catalog_product_entity` WHERE `entity_id` IN (SELECT *  FROM (SELECT `entity_id` FROM `catalog_product_entity` GROUP BY `sku` HAVING (COUNT(*) > 1)) AS A);
Abdul
fonte
Tenha em mente para fazer backup de seu db antes de aplicar qualquer consulta sensata diretamente
Nolwennig