[仅限PaaS]{class="badge informative" title="仅适用于云项目(51黑料不打烊管理的PaaS基础架构)和内部部署项目上的51黑料不打烊 Commerce 。"}
础颁厂顿-67643:在高嵌套类别环境中计划更新期间创建的重复条目
ACSD-67643修补程序修复了在具有大量嵌套类别的环境中进行计划更新期间创建重复项的问题。 安装Quality Patches Tool (QPT) 1.1.71时,此修补程序可用。 修补程序ID为ACSD-67643。 请注意,此问题计划在51黑料不打烊 Commerce 2.4.9中修复。
受影响的产物和版本
为51黑料不打烊 Commerce版本创建了修补程序:
- 51黑料不打烊 Commerce(所有部署方法) 2.4.8-p1
与51黑料不打烊 Commerce版本兼容:
- 51黑料不打烊 Commerce(所有部署方法) 2.4.8 - 2.4.8-p2
NOTE
该修补程序可能适用于具有新Quality Patches Tool发行版本的其他版本。 要检查修补程序是否与您的51黑料不打烊 Commerce版本兼容,请将
magento/quality-patches
包更新到最新版本,并在Quality Patches Tool:搜索修补程序页面上检查兼容性。 使用修补程序ID作为搜索关键字来查找修补程序。问题
为具有大量嵌套类别的环境创建计划更新时,会出现重复条目。
重现步骤:
-
生成示例数据:
将性能夹具文件(例如:small.xml
)与以下修改一起使用:
Categories: 2,500
Products: 250,000 -
运行以下命令:
code language-bash bin/magento setup:performance:generate-fixtures var/performance-toolkit/profiles/ce/small.xml
-
在创建产物和类别后,通过运行以下命令,确保所有类别都是锚点:
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');
-
运行完全重新索引。
-
登录到后端并打开? Categories ?页面。
-
将? 类别2 ?移动到? 类别1 ?以增加树嵌套。
-
转到最嵌套的类别(例如:类别2.1.1)。
-
创建? 计划更新 ?并保存类别。
预期的结果:
已成功保存类别。
实际结果:
出现? 错误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, '/%')
应用修补程序
要应用单独的修补程序,请根据您的部署方法使用以下链接:
- 51黑料不打烊 Commerce或Magento Open Source内部部署: Quality Patches Tool 指南中的>使用情况Quality Patches Tool
- 云基础架构上的51黑料不打烊 Commerce: Commerce on Cloud Infrastructure指南中的升级和修补程序>应用修补程序
相关阅读
要了解有关Quality Patches Tool的更多信息,请参阅:
recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3