You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Admin API创建订单时testenv环境item_rounding和total_rounding为NULL

问题

通过Shopware Admin API创建新订单时,该操作在除testenv(基于shopwareLabs/testenv-platform搭建的测试环境)之外的所有环境均正常运行。在testenv中,订单虽能成功创建,但数据库内的item_rounding和total_rounding字段值为NULL,导致后台管理面板因Vue组件缺失舍入数据而报错,无法查看订单详情。本地环境使用完全相同的请求数据测试时,可正常得到空204响应,且数据库中对应字段值正常。

解决方案建议

排查配置差异

对比testenv与正常环境的金额舍入相关配置,重点检查config/packages/shopware.yaml中core.cart.rounding下的参数,testenv可能默认禁用了舍入计算或配置项异常,导致服务未生成舍入值。

验证核心服务执行逻辑

订单创建时的舍入值由CartRoundingService等核心服务处理,testenv可能存在服务依赖注入异常,导致该服务未被正确调用。可通过添加临时日志或直接调试该服务,确认在testenv环境中是否执行了舍入计算逻辑。

修复数据库字段默认值

检查testenv的订单表(order)字段配置,正常环境中item_rounding和total_rounding通常会设置默认值0.000,若testenv的数据库初始化脚本未配置默认值,服务未赋值时就会出现NULL。执行以下SQL修改字段:

ALTER TABLE `order` MODIFY COLUMN `item_rounding` DECIMAL(20,3) NOT NULL DEFAULT 0.000;
ALTER TABLE `order` MODIFY COLUMN `total_rounding` DECIMAL(20,3) NOT NULL DEFAULT 0.000;

匹配Shopware版本

确认testenv使用的Shopware版本与本地/生产环境一致,部分版本的舍入逻辑存在差异,版本不匹配可能导致字段未被正确填充。

临时应急修复

若需快速恢复管理面板的订单查看功能,可直接更新异常订单的字段值:

UPDATE `order` SET `item_rounding` = 0.000, `total_rounding` = 0.000 WHERE `item_rounding` IS NULL OR `total_rounding` IS NULL;

内容的提问来源于stack exchange,提问作者Szymon W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:30:50