[PaaS만]{class="badge informative" title="Adobe Commerce 온 클라우드 프로젝트(Adobe 관리 PaaS 인프라) 및 온프레미스 프로젝트에만 적용됩니다."}

ACSD-68064: 깊게 중첩된 범주가 있는 환경에서 예약된 업데이트 중에 생성된 중복 항목입니다.

ACSD-68064 패치는 중첩 범주가 많은 환경에서 예약된 업데이트를 만들면 항목이 중복되고 범주가 저장되지 않는 문제를 해결합니다. 이 패치는 Quality Patches Tool (QPT) 1.1.72가 설치되어 있을 때 사용할 수 있습니다. 패치 ID는 ACSD-68064입니다. 이 문제는 Adobe Commerce 2.4.9에서 수정됩니다.

영향을 받는 제품 및 버전

Adobe Commerce 버전에 대한 패치가 만들어졌습니다.

  • Adobe Commerce(모든 배포 방법) 2.4.7-p6

Adobe Commerce 버전과 호환:

  • Adobe Commerce(모든 배포 방법) 2.4.7 - 2.4.7-p7
NOTE
새 Quality Patches Tool 릴리스가 있는 다른 버전에 패치를 적용할 수 있습니다. 패치가 Adobe Commerce 버전과 호환되는지 확인하려면 magento/quality-patches 패키지를 최신 버전으로 업데이트하고 Quality Patches Tool에서 호환성을 확인합니다. 패치 검색 페이지. 패치 ID를 검색 키워드로 사용하여 패치를 찾습니다.

문제

중첩된 범주가 많은 환경에서 예약된 업데이트를 만들면 항목이 중복되어 오류가 발생하고 범주가 저장되지 않습니다.

재현 단계:

  1. 클린 인스턴스를 설치합니다.

  2. 다음을 포함하도록 성능 고정장치 파일(small.xml)을 수정합니다.

    1. Categories: 2500
    2. Products: 250,000
  3. 다음 명령을 사용하여 데이터를 생성합니다.

    code language-none
    bin/magento setup:performance:generate-fixtures var/performance-toolkit/profiles/ce/small.xml
    
  4. 제품 및 범주를 만든 후 다음 쿼리를 실행하여 모든 범주가 앵커로 설정되었는지 확인하십시오.

    code language-none
    UPDATE catalog_category_entity_int set value = 1 where attribute_id = (select attribute_id from eav_attribute where attribute_code = 'is_anchor');
    
  5. 데이터를 다시 색인화합니다.

  6. 관리 패널에 로그인하고 Catalog > Categories(으)로 이동합니다.

  7. Category 1​에서 Category 2​을(를) 이동하여 더 중첩된 구조를 만듭니다.

  8. 깊게 중첩된 범주로 이동합니다(예: 범주 2.1.1).

  9. Scheduled Update 만들기

  10. Save​을(를) 클릭합니다.

예상 결과:

범주가 저장되었습니다.

실제 결과:

오류가 발생하여 범주가 저장되지 않습니다. var/log/exception.log에 다음과 유사한 오류가 있습니다.

Exception #0 (Magento\Framework\DB\Adapter\DuplicateException): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '229-255' for key 'temp_category_descendants_619aaaaaaaaaa.PRIMARY', query was: INSERT INTO `temp_category_descendants_619aaaaaaaaaa` (`category_id`, `descendant_id`) SELECT `ce`.`entity_id` AS `category_id`, `ce2`.`entity_id` AS `descendant_id` FROM `catalog_category_entity` AS `ce`
 INNER JOIN `catalog_category_entity` AS `ce2` ON ce2.path LIKE CONCAT(ce.path, '/%') OR ce2.entity_id = ce.entity_id AND (ce2.created_in <= '1750287600' AND ce2.updated_in > '1750287600') WHERE ((ce.entity_id IN (4, 6, 7, 8, 10, 24, 25, 27, 30, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 48, 51, 54, 56, 57, 59, 60, 63, 64, 65, 66, 67 .......

패치 적용

개별 패치를 적용하려면 배포 방법에 따라 다음 링크를 사용합니다.

관련 읽기

Quality Patches Tool에 대한 자세한 내용은 다음을 참조하세요.

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3