[仅限PaaS]{class="badge informative" title="仅适用于云项目(Adobe管理的PaaS基础架构)和内部部署项目上的Adobe Commerce 。"}

ACP2E-4522:当同时运行多个购物车合并或报价保存请求时,quote_coupons表中会出现间歇性的重复键错误

ACP2E-4522修补程序修复了在同时运行多个购物车合并或报价保存请求时, quote_coupons表上出现间歇性重复键错误的问题。 安装Quality Patches Tool (QPT) 1.1.78时,此修补程序可用。 修补程序ID为ACP2E-4522。 请注意,此问题计划在Adobe Commerce 2.4.9中修复。

受影响的产品和版本

为Adobe Commerce版本创建了修补程序:

  • Adobe Commerce(所有部署方法) 2.4.7-p7

与Adobe Commerce版本兼容:

  • Adobe Commerce(所有部署方法) 2.4.7 - 2.4.8-p4
NOTE
该修补程序可能适用于具有新Quality Patches Tool发行版本的其他版本。 要检查修补程序是否与您的Adobe Commerce版本兼容,请将magento/quality-patches包更新到最新版本,并在Quality Patches Tool:搜索修补程序页面上检查兼容性。 使用修补程序ID作为搜索关键字来查找修补程序。

问题

当同时运行多个购物车合并或报价保存请求时,quote_coupons表发生间歇性重复键错误。

重现步骤

  1. 在位于​Stores > Settings > Configuration > Sales > Multicoupon Settings​的管理员侧边栏下启用每张订单的最大优惠券数量= 10。

  2. 在​Marketing > Promotions > Cart Price Rules > ​ Add New Rule​下创建购物车价格规则:

    1. Rule Name: TESTCOUPON2026
    2. ActiveYesWebsitesMain WebsiteCustomer Groups;选择所有适用的组。
    3. CouponSpecific CouponCoupon Code: TESTCOUPON2026。
    4. Uses per Customer:留空。
    5. Conditions:未添加条件。
    6. Actions > Percent of product price discount; Discount Amount = 10.
  3. 使用GraphQL将数量至少为7的产品添加到访客购物车,然后应用优惠券。

  4. 运行六个并发并行GraphQL mergeCarts调用:

    code language-none
    mutation {
      mergeCarts(
        source_cart_id: "<GUEST_CART_ID>"
        destination_cart_id: "<DESTINATION_CART_ID>"
      ) {
        id
        items { id product { sku } }
        applied_coupons { code }
      }
    }
    

预期的结果

GraphQL合并未返回任何错误。

实际结果

mergeCarts GraphQL突变返回错误。
日志显示,当多个合并请求或报价保存请求同时执行时,quote_coupons表(QUOTE_COUPONS_QUOTE_ID_COUPON_CODE)上出现重复键约束冲突,从而导致GraphQL失败。

tail -n 200 var/log/exception.log var/log/debug.log | grep -E "Duplicate entry|QUOTE_COUPONS_QUOTE_ID_COUPON_CODE"

应用修补程序

要应用单独的修补程序,请根据您的部署方法使用以下链接:

相关阅读

要了解有关Quality Patches Tool的更多信息,请参阅:

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