产品网格magento 2中的“可售数量”显示为零?


14

实际上,在我的情况下,Magento 2.3产品网格中的“ 可售数量”显示为零

由于此问题,产品未在前端显示。如果有人有任何想法,请告诉我。

为此,也完成了重新索引编制,但“ 可售数量”仍然显示(0)。

以编程方式添加和更新“数量”,但“ 可销售数量”显示为零


尝试允许缺货缺货,并检查是否将显示产品。这不是一个解决办法,但至少要检查是否确切的问题是可售数量。
fmsthird

你修好了吗?
fmsthird

是的,实际上我们的服务器中存在权限问题
Hitesh Balpande

嗨,您发现问题了吗?
Octopus

Answers:


21

在数据库中,有两种类型,

1)桌子

2)意见

当未在Magento 2.3中创建导入/导出数据库视图时,可能会导致此问题。因此,在数据库中创建“ 视图”和“ stockstock_stock_1”表。

请参阅附件图像:

在此处输入图片说明


1
非常感谢。花了2个小时后,我从您的答案中得到了解决方案。再次感谢。
Kamlesh Solanki

2
+1最佳答案
Sanjay Gohil19年

@Savan它已经在我的末端创建了。但仍然面临着同样的问题
insoftservice

@insoftservice我也面临着同样的问题,您有任何想法吗?
Hardik Visa

@HardikVisa您最后有这种看法吗?如果是的话,只是尝试在我的末端手动执行它,但是出现了权限问题,通过授予完全权限解决了该问题。
insoftservice

10

由于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`))) ;

因为视图不是在实时服务器中创建的 在此处输入图片说明


3

我必须从@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`))) ;

删除失败导致权限错误。



0

通过执行以下查询创建视图后,我遇到了同样的问题,我的问题已解决。

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`))
   ) ;

0

解决此问题的另一种方法是从中删除补丁,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

以一位或一位通过管理员大规模保存零销售数量的产品。


0

我将分享我在此问题上的经验,希望它可以对本来会遇到同样情况的人有所帮助。

我们正在一个分阶段的实例上工作,所有的东西都准备好投入生产了。因此,我们在prod env上复制了所有内容,并启动了一些SQL截断符,以便删除每个虚拟订单,评论等。您明白了。

经过一些最终测试,我们意识到我们的产品“库存数量”与产品“销售数量”有很大不同。SQL视图似乎运行良好,因此我们进行了更深入的研究。原来我们在截断指令中错过了一个SQL表:

TRUNCATE TABLE `inventory_reservation`;

这个坏女孩装着过去订单中的每个“ 未发货但保留的产品 ”。

当然不要忘记重新索引内容:

bin/magento indexer:reindex;

-3

我只是更改为商店->目录->库存->产品库存选项->待办事项->允许数量低于0

问题解决了

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.