[仅限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
magento/quality-patches包更新到最新版本,并在Quality Patches Tool:搜索修补程序页面上检查兼容性。 使用修补程序ID作为搜索关键字来查找修补程序。问题
当同时运行多个购物车合并或报价保存请求时,quote_coupons表发生间歇性重复键错误。
重现步骤:
-
在位于Stores > Settings > Configuration > Sales > Multicoupon Settings的管理员侧边栏下启用每张订单的最大优惠券数量= 10。
-
在Marketing > Promotions > Cart Price Rules > Add New Rule下创建购物车价格规则:
- Rule Name: TESTCOUPON2026
- Active: Yes;Websites: Main Website; Customer Groups;选择所有适用的组。
- Coupon: Specific Coupon;Coupon Code: TESTCOUPON2026。
- Uses per Customer:留空。
- Conditions:未添加条件。
- Actions > Percent of product price discount; Discount Amount = 10.
-
使用GraphQL将数量至少为7的产品添加到访客购物车,然后应用优惠券。
-
运行六个并发并行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"
应用修补程序
要应用单独的修补程序,请根据您的部署方法使用以下链接:
- Adobe Commerce或Magento Open Source内部部署: Quality Patches Tool指南中的Quality Patches Tool >使用情况。
- 云基础架构上的Adobe Commerce:云基础架构上的Commerce指南中的升级和修补程序>应用修补程序。
相关阅读
要了解有关Quality Patches Tool的更多信息,请参阅: