Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除Magento上的所有产品_Php_Mysql_Magento - Fatal编程技术网

Php 删除Magento上的所有产品

Php 删除Magento上的所有产品,php,mysql,magento,Php,Mysql,Magento,在Magento上有很多关于这个问题的帖子。它们中的大多数都可以工作,但是在执行delete-codes/SQL语句之后,类别没有将其值重置为零的问题仍然存在,直到现在还没有得到解决 这里是否有人拥有正确的代码或程序来正确删除库存中的所有产品,并在执行后将类别列表重置为零 提前感谢。要删除产品,您只需使用后端: 目录>管理产品>选择所有复选框,然后选择操作=删除并点击提交。 这可能对数千种产品非常有效。无论使用何种方法删除产品,重建类别产品索引都应修复计数。转到系统>索引管理。选中“类别产品”旁

在Magento上有很多关于这个问题的帖子。它们中的大多数都可以工作,但是在执行delete-codes/SQL语句之后,类别没有将其值重置为零的问题仍然存在,直到现在还没有得到解决

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


提前感谢。

要删除产品,您只需使用后端: 目录>管理产品>选择所有复选框,然后选择操作=删除并点击提交。
这可能对数千种产品非常有效。

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

要删除所有可以使用此查询的产品,请执行以下操作:

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

注意:

从Magento删除所有产品很容易,只需运行:

DELETE FROM `catalog_product_entity`
由于在Magento的数据库中设置了外键约束,所有其他包含产品信息的表都得到了很好的清理。当然,删除很多产品需要一些时间,但至少会得到很好的清理

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

DELETE FROM `catalog_product_entity` LIMIT 10000
更新:
这个逻辑也会在Magento的核心中使用,所以使用起来很安全

在独立脚本中:

<?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();
    }
}
对1400多种产品进行了测试,效果良好。之后你必须重新编制索引

注意,上面的脚本将删除您的所有产品

效果非常好

Mage::getModel('catalog/product')->getCollection()->delete();
Php myadmin-选择顶部的数据库magento SWL,然后粘贴以下内容:

DELETE FROM `catalog_product_entity`

在Magento 1.7.0.2上测试

    SET FOREIGN_KEY_CHECKS = 0;
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_flat_1`;
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_label`;
TRUNCATE TABLE `catalog_product_super_attribute_pricing`;
TRUNCATE TABLE `catalog_product_super_attribute`;
TRUNCATE TABLE `catalog_product_super_link`;
TRUNCATE TABLE `catalog_product_enabled_index`;
TRUNCATE TABLE `catalog_product_website`;
TRUNCATE TABLE `catalog_product_relation`;
TRUNCATE TABLE `catalog_category_product_index`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `cataloginventory_stock_item`;
TRUNCATE TABLE `cataloginventory_stock_status`;
TRUNCATE TABLE `cataloginventory_stock_status_idx`;
TRUNCATE TABLE `cataloginventory_stock`;
TRUNCATE TABLE `core_url_rewrite`;
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');
TRUNCATE TABLE `catalog_product_entity`;
SET FOREIGN_KEY_CHECKS = 1;

我认为最干净的解决方案是:

进入系统->索引管理,将所有索引设置为手动更新索引模式 转到目录->管理产品,选择所有产品并使用删除操作删除所有产品。
这不如从数据库中手动删除产品快,但这可能是删除所有产品的最快正确方法,您不必担心孤立的数据库条目或外键冲突。

您是指ID号吗?您必须重置表的自动增量主键。否。我要说明每个类别下的产品数量。那么对于这么多的产品来说,速度会非常慢,内存/服务器超时问题。我改变了主意。为了帮助那些有类似问题的人,我选择这个作为最合适的答案。由于数据完整性问题,这个查询不起作用。它向我显示了错误1701-无法截断外键约束dbname.catalog\u product\u bundle\u option\u值中引用的表,约束FK\u MKM\u CAT\u PRD\u BNDL\u OPT\u VAL\u OPT\u ID\u MKM\u CAT\u PRD\u OPT\u ID`外键选项\u ID引用dbname.catalog\u produ。有没有办法解决这个问题?添加SET FOREIGN\u KEY\u CHECKS=0;在上述代码的顶部,添加SET FOREIGN_KEY_CHECKS=1;代码底部。删除数据完整性检查,交叉手指,希望数据不会损坏=设置外键检查=0+1用于使用Magento脚本,该脚本应保持数据完整性,而不是攻击数据库,查找不起作用的内容并关闭完整性检查,稍后再查找确实不起作用的内容。5月份产品的完整性问题对于数量更多的产品~100000,可以通过添加以下内容来改进脚本:ini_setmemory_limit,2024M;ini_设置最大执行时间,86400;和要删除的“Mage::log:”$产品->获取ID;`我需要一些反馈。在屏幕上启动它可能很有意义。这不会删除分类索引,不会,这意味着删除所有产品。要删除分类,请使用:从目录中删除分类实体;这必须是最重要的答案。我不会从目录\类别\实体运行删除;因为它删除了你的根目录,给你带来了一些悲伤。可能使用“从目录中删除”\u类别\u实体,其中级别!=0请不要使用将外键检查设置为0的查询。查询运行得更快,但可能会导致数据库损坏。启用FK时无法截断,因为imho mysql会删除该表并创建一个新表。