[PaaS のみ]{class="badge informative" title="Adobe Commerce on Cloud プロジェクト(Adobeが管理する PaaS インフラストラクチャ)およびオンプレミスプロジェクトにのみ適用されます。"}

ACSD-67643:ネストの高いカテゴリ環境で、スケジュールされた更新時に重複エントリが作成される

ACSD-67643 パッチでは、ネストされたカテゴリが多数ある環境で、スケジュールされた更新時に重複エントリが作成される問題が修正されています。 このパッチは、Quality Patches Tool (QPT) 1.1.71 がインストールされている場合に使用できます。 パッチ ID は ACSD-67643 です。 この問題はAdobe Commerce 2.4.9 で修正される予定であることに注意してください。

影響を受ける製品とバージョン

Adobe Commerce バージョン用のパッチが作成されます。

  • Adobe Commerce(すべてのデプロイメント方法) 2.4.8-p1

Adobe Commerce バージョンとの互換性:

  • Adobe Commerce(すべてのデプロイメント方法) 2.4.8 - 2.4.8-p2
NOTE
このパッチは、新しい Quality Patches Tool リリースを含む他のバージョンにも適用される可能性があります。 パッチがAdobe Commerceのバージョンと互換性があるかどうかを確認するには、magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool: Search for patches page で互換性を確認します。 パッチ ID を検索キーワードとして使用して、パッチを見つけます。

問題

ネストされたカテゴリが多数ある環境のスケジュールされた更新を作成すると、重複したエントリが発生します。

再現手順 :

  1. サンプルデータを生成:
    修正を加えたパフォーマンス フィクスチャ ファイル(small.xml など)を使用します。
    Categories: 2,500
    Products: 億ドル

  2. 次のコマンドを実行します。

    code language-bash
    bin/magento setup:performance:generate-fixtures var/performance-toolkit/profiles/ce/small.xml
    
  3. 製品とカテゴリを作成したら、次のコマンドを実行して、すべてのカテゴリがアンカーであることを確認します。

    code language-sql
    UPDATE catalog_category_entity_int SET value = 1 WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'is_anchor');
    
  4. 完全な再インデックスを実行します。

  5. バックエンドにログインし、Categories ページを開きます。

  6. カテゴリ 2カテゴリ 1 に移動して、ツリーのネストを増やします。

  7. 最もネストされたカテゴリに移動します(例:カテゴリ 2.1.1)。

  8. スケジュールされた更新 を作成して、カテゴリを保存します。

期待される結果 :

カテゴリが正常に保存されました。

実際の結果 :

エラー 500 が発生し、次のメッセージがログに表示されます。

    Magento\Framework\DB\Adapter\DuplicateException:
    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '6-165' for key 'PRIMARY',
    query was: INSERT INTO `temp_category_descendants_68a35aea273fc` (`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, '/%')

パッチの適用

個々のパッチを適用するには、デプロイメント方法に応じて、次のリンクを使用します。

関連資料

Quality Patches Tool について詳しくは、以下を参照してください。

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