Удаление всех продуктов на Magento

В Magento есть много сообщений по этой проблеме. Большинство из них работают, но проблема с категорией, не возвращающей их значения в ZERO после выполнения кодов удаления/операторов SQL, по-прежнему сохраняется и до сих пор не адресована.

У кого-нибудь есть правильный код или процедура для правильного удаления всех продуктов из инвентаря и листинг категории также reset равен нулю после его выполнения?

Спасибо заранее.

Ответы

Ответ 1

Независимо от метода, используемого для удаления продуктов, для восстановления индекса категории продуктов необходимо исправить подсчеты. Перейдите в раздел Системa > Управление индексами. Установите флажок "Категории товаров", измените действие (вверху справа) на "Reindex" и нажмите "Отправить".

Ответ 2

Удаление всех продуктов Magento можно легко выполнить, просто запустите:

DELETE FROM `catalog_product_entity`

Из-за ограничений внешнего ключа, установленных в базе данных Magento, все остальные таблицы, содержащие информацию о продуктах в них, хорошо очищаются. Конечно, потребуется некоторое время, чтобы удалить много продуктов, но, по крайней мере, он очищается красиво.

Если запрос не может быть запущен из-за максимального времени выполнения, вы всегда можете запустить что-то вроде:

DELETE FROM `catalog_product_entity` LIMIT 10000

Обновление: эта логика также используется в ядре Magento, поэтому она безопасна в использовании! https://github.com/OpenMage/magento-mirror/blob/magento-1.8/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php#L462

Ответ 3

В автономном режиме script:

<?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 продуктов, работал отлично. После этого вам нужно сделать переиндексацию.

Остерегайтесь вышеуказанного script будет удалять ВСЕ ваши продукты

Ответ 4

Чтобы удалить все продукты, вы можете использовать этот запрос:

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

С уважением:)

Ответ 5

Чтобы удалить продукты, вы можете просто использовать бэкэнд:
Каталог > Управление продуктами > Выберите все checboxes и выберите Action = Удалить и нажмите submit.
Это может работать очень хорошо для некоторых тысяч продуктов.

Ответ 6

Mage::getModel('catalog/product')->getCollection()->delete();

Ответ 7

Протестировано на 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;

Ответ 8

Работали как шарм...

Php myadmin - выберите databse (magento) SWL сверху, а затем вставьте следующее:

DELETE FROM `catalog_product_entity`

Ответ 9

Самое чистое решение, на мой взгляд, следующее:

  • Перейдите в System -> Index Management и установите все индексы в индексный режим "Ручное обновление"
  • Перейдите в Catalog -> Manage Products, выберите все продукты и используйте действие Delete для удаления всех продуктов.

Это не так быстро, как вручную удалять продукты из базы данных, но это, вероятно, самый быстрый способ удалить все продукты, в которых вам не нужно беспокоиться о потерянных записях базы данных или конфликтах внешнего ключа.

Ответ 10

SELECT * FROM `mage_catalog_product_entity`

предоставляет список продуктов, которые в настоящее время активны.