删除Magento上的所有产品

Jho*_*lla 17 php mysql magento

在Magento上有很多关于这个问题的帖子.它们中的大多数都可以工作,但是在执行删除代码/ SQL语句后,类别没有将其值重置为ZERO的问题仍然存在,直到现在才被解决.

这里有没有人有正确的代码或程序来正确删除库存中的所有产品,并在执行后将类别列表重置为零?

提前致谢.

Pau*_*ang 57

只需运行即可轻松实现从Magento中删除所有产品:

DELETE FROM `catalog_product_entity`
Run Code Online (Sandbox Code Playgroud)

由于Magento数据库中设置了外键约束,所以其中包含产品信息的所有其他表都可以很好地清理.删除很多产品当然需要一些时间,但至少可以很好地清理它.

如果由于最长执行时间而无法运行查询,则可以始终运行如下操作:

DELETE FROM `catalog_product_entity` LIMIT 10000
Run Code Online (Sandbox Code Playgroud)

更新:此逻辑也在Magento的核心中使用,因此使用安全!https://github.com/OpenMage/magento-mirror/blob/magento-1.8/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php#L462

  • 我不会运行`DELETE FROM catalog_category_entity;`因为它删除了你的根类别,导致你的悲伤.也许使用`DELETE FROM catalog_category_entity WHERE level!= 0` (6认同)
  • 实际上,它没有,这意味着删除所有产品. (4认同)
  • 这需要是最好的答案. (3认同)
  • 要删除类别,请使用:`DELETE FROM catalog_category_entity;` (2认同)

Ker*_*men 13

在一个独立的脚本中:

<?php
require 'app/Mage.php';
Mage::app('admin')->setUseSessionInUrl(false);


$products = Mage::getModel('catalog/product')->getCollection();    
foreach ($products as $product) {
    try {
        $product->delete();
    } catch(Exception $e) {
        echo "Product #".$product->getId()." could not be remvoved: ".$e->getMessage();
    }
}
Run Code Online (Sandbox Code Playgroud)

对于1400多种产品,这样做是否正常.之后你必须重新编制索引.

请注意以上脚本将删除您的所有产品


Jim*_*ran 6

无论用于删除产品的方法如何,重建“类别产品”索引都应该修复计数。进入系统 > 索引管理。选中“类别产品”旁边的框,将操作(右上角)更改为“重新索引”,然后单击提交。


小智 5

要删除所有产品,您可以使用此查询:

TRUNCATE TABLE `catalog_product_bundle_option`;
TRUNCATE TABLE `catalog_product_bundle_option_value`;
TRUNCATE TABLE `catalog_product_bundle_selection`;
TRUNCATE TABLE `catalog_product_entity_datetime`;
TRUNCATE TABLE `catalog_product_entity_decimal`;
TRUNCATE TABLE `catalog_product_entity_gallery`;
TRUNCATE TABLE `catalog_product_entity_int`;
TRUNCATE TABLE `catalog_product_entity_media_gallery`;
TRUNCATE TABLE `catalog_product_entity_media_gallery_value`;
TRUNCATE TABLE `catalog_product_entity_text`;
TRUNCATE TABLE `catalog_product_entity_tier_price`;
TRUNCATE TABLE `catalog_product_entity_varchar`;
TRUNCATE TABLE `catalog_product_link`;
TRUNCATE TABLE `catalog_product_link_attribute`;
TRUNCATE TABLE `catalog_product_link_attribute_decimal`;
TRUNCATE TABLE `catalog_product_link_attribute_int`;
TRUNCATE TABLE `catalog_product_link_attribute_varchar`;
TRUNCATE TABLE `catalog_product_link_type`;
TRUNCATE TABLE `catalog_product_option`;
TRUNCATE TABLE `catalog_product_option_price`;
TRUNCATE TABLE `catalog_product_option_title`;
TRUNCATE TABLE `catalog_product_option_type_price`;
TRUNCATE TABLE `catalog_product_option_type_title`;
TRUNCATE TABLE `catalog_product_option_type_value`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_attribute_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_entity`;

TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;

INSERT  INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT  INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT  INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');
Run Code Online (Sandbox Code Playgroud)

问候 :)

  • 在上面的代码顶部添加`SET FOREIGN_KEY_CHECKS = 0;`并添加`SET FOREIGN_KEY_CHECKS = 1;`代码底部. (2认同)