데이터베이스를 통해 중복 SKU를 제거하는 방법은 무엇입니까?


12

관리자를 통해 일부 Magento 제품을 편집하고 저장하려고 할 때이 오류가 발생 합니다 . " "SKU "속성의 값은 고유해야합니다 ."

Magento admin에서 내 제품을 볼 때 중복 sku를 찾을 수 없지만 제품 내보내기를 실행할 때 실제로 sku가 동일한 일부 제품이 있습니다. 이론적으로 Magento는 이런 일이 일어나지 않아야했지만 슬프게도 이전 Magento 버그와 단점의 잔재물을 운반하는 것으로 보이는 상당히 크고 성숙한 (3 세 이상) 제품 그룹을 다루고 있습니다.

이 문제를 해결하는 유일한 방법은 데이터베이스에서 중복 skus 중 하나를 수동으로 제거하는 것입니다.하지만이 작업을 수행하는 가장 안전한 방법은 확실하지 않습니다. 데이터베이스 작업 경험이 거의 없기 때문에 도움을 주시면 감사하겠습니다.

답변:


7
  1. 백업 하여 catalog_product_entity데이터베이스 테이블 ( 참조 : /programming//a/6683000/4457531 )

  2. catalog_product_entity이 쿼리와 함께 테이블에 중복 skus가 있는지 확인하십시오 .

    SELECT COUNT(*), sku
    FROM `catalog_product_entity`
    GROUP BY sku HAVING COUNT(*) > 1
  3. 중복 항목 제거

    • 다음 과 같이 중복 제품을 제거 하고 이전 SKU를 유지 하십시오 .

      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
    • 하기 이전 제거 중복 제품 및 새로운 유지 , SKU를 대체 MIN함으로써MAX 에서 하위 쿼리에 가입

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


1

예기치 않은 skus를 조사하고 청소해야합니다. 먼저 관련 skus를 찾은 다음 아래 쿼리를 사용하여 데이터베이스에서 정리해야합니다.

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

당신이하는 일을 확신한다면, 그렇게하는 것이 좋습니다. 이것은 되돌릴 수 없습니다.


현명한 쿼리를 직접 적용하기 전에 데이터베이스를 백업하십시오.
Nolwennig

1

데이터베이스를 통해 다음 스크립트를 실행하십시오

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);

현명한 쿼리를 직접 적용하기 전에 DB를 백업하십시오.
Nolwennig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.