实际上,在我的情况下,Magento 2.3产品网格中的“ 可售数量”显示为零。
由于此问题,产品未在前端显示。如果有人有任何想法,请告诉我。
为此,也完成了重新索引编制,但“ 可售数量”仍然显示零(0)。
以编程方式添加和更新“数量”,但“ 可销售数量”显示为零。
实际上,在我的情况下,Magento 2.3产品网格中的“ 可售数量”显示为零。
由于此问题,产品未在前端显示。如果有人有任何想法,请告诉我。
为此,也完成了重新索引编制,但“ 可售数量”仍然显示零(0)。
以编程方式添加和更新“数量”,但“ 可销售数量”显示为零。
Answers:
在数据库中,有两种类型,
1)桌子
2)意见
当未在Magento 2.3中创建导入/导出数据库视图时,可能会导致此问题。因此,在数据库中创建“ 视图”和“ stockstock_stock_1”表。
请参阅附件图像:
由于Previllages错误,我跳过了这一行查询,并且我的添加到购物车在实时服务器上不起作用,在本地服务器中,没有跳过此行,并且添加到购物车工作正常。
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1` AS select distinct `legacy_stock_status`.`product_id` AS `product_id`,`legacy_stock_status`.`website_id` AS `website_id`,`legacy_stock_status`.`stock_id` AS `stock_id`,`legacy_stock_status`.`qty` AS `quantity`,`legacy_stock_status`.`stock_status` AS `is_salable`,`product`.`sku` AS `sku` from (`cataloginventory_stock_status` `legacy_stock_status` join `catalog_product_entity` `product` on((`legacy_stock_status`.`product_id` = `product`.`entity_id`))) ;
我必须从@Thakur答案中删除DEFINER=
根本地@
主机,所以这是我使用的方式:
CREATE ALGORITHM=UNDEFINED SQL SECURITY INVOKER VIEW `inventory_stock_1` AS
select distinct `legacy_stock_status`.`product_id` AS `product_id`,
`legacy_stock_status`.`website_id` AS `website_id`,
`legacy_stock_status`.`stock_id` AS `stock_id`,
`legacy_stock_status`.`qty` AS `quantity`,
`legacy_stock_status`.`stock_status` AS `is_salable`,
`product`.`sku` AS `sku`
from (`cataloginventory_stock_status` `legacy_stock_status`
join `catalog_product_entity` `product`
on((`legacy_stock_status`.`product_id` = `product`.`entity_id`))) ;
删除失败导致权限错误。
请尝试以下步骤:
Admin -> Stores -> Inventory -> Stock -> Edit Default Stock -> Sales Channels -> select Main Website
工作正常。
或找到以下链接
https://webkul.com/blog/get-salable-quantity-in-magento-2-3/
通过执行以下查询创建视图后,我遇到了同样的问题,我的问题已解决。
CREATE ALGORITHM=UNDEFINED DEFINER=`{database_user_name}`@`localhost` SQL SECURITY INVOKER VIEW `inventory_stock_1` AS
SELECT distinct `legacy_stock_status`.`product_id` AS `product_id`,
`legacy_stock_status`.`website_id` AS `website_id`,
`legacy_stock_status`.`stock_id` AS `stock_id`,
`legacy_stock_status`.`qty` AS `quantity`,
`legacy_stock_status`.`stock_status` AS `is_salable`,
`product`.`sku` AS `sku`
FROM
(
`cataloginventory_stock_status` `legacy_stock_status`
join `catalog_product_entity` `product`
on ((`legacy_stock_status`.`product_id` = `product`.`entity_id`))
) ;
解决此问题的另一种方法是从中删除补丁,patch_list
然后重新运行setup:upgrade
以重新调用命令。
SQL SECURITY INVOKER
可以在Magento \ InventoryCatalog \ Setup \ Patch \ Schema \ CreateLegacyStockStatusView中找到负责创建的代码。
您可以通过搜索运行从补丁程序列表中删除数据补丁程序
select * from patch_list where patch_name = 'Magento\InventoryCatalog\Setup\Patch\Schema\CreateLegacyStockStatusView
删除记录。
重新运行
setup:upgrade
setup:di:compile
setup:static-content:deploy
以一位或一位通过管理员大规模保存零销售数量的产品。
我将分享我在此问题上的经验,希望它可以对本来会遇到同样情况的人有所帮助。
我们正在一个分阶段的实例上工作,所有的东西都准备好投入生产了。因此,我们在prod env上复制了所有内容,并启动了一些SQL截断符,以便删除每个虚拟订单,评论等。您明白了。
经过一些最终测试,我们意识到我们的产品“库存数量”与产品“销售数量”有很大不同。SQL视图似乎运行良好,因此我们进行了更深入的研究。原来我们在截断指令中错过了一个SQL表:
TRUNCATE TABLE `inventory_reservation`;
这个坏女孩装着过去订单中的每个“ 未发货但保留的产品 ”。
当然不要忘记重新索引内容:
bin/magento indexer:reindex;