Удаление всех продуктов на 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`
предоставляет список продуктов, которые в настоящее время активны.