web-dev-qa-db-ja.com

Magento上のすべての製品の削除

Magentoにはこの問題に関する投稿がたくさんあります。それらのほとんどは機能しますが、削除コード/ SQLステートメントの実行後にカテゴリーが値をゼロにリセットしないという問題は依然として解決されず、今まで対処されていません。

ここの誰かがすべての製品を在庫から適切に削除するための正しいコードまたは手順を持っていますか、それを実行した後にカテゴリリストもゼロにリセットしましたか?

前もって感謝します。

17

商品の削除に使用された方法に関係なく、「Category Products」インデックスを再構築するとカウントが修正されます。 [システム]> [インデックス管理]に移動します。 「Category Products」の横にあるチェックボックスをオンにし、アクション(右上)を「Reindex」に変更して、[送信]をクリックします。

5
Jim OHalloran

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

58
Paul Hachmang

スタンドアロンスクリプトで:

<?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以上の製品で問題なく動作しましたか。その後、インデックスの再作成を行う必要があります。

上記のスクリプトがすべて削除あなたの製品になることに注意してください

13
Kervin Ramen

すべての製品を削除するには、次のクエリを使用できます。

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
boti

商品を削除するには、バックエンドを使用するだけです:
カタログ>製品の管理>すべてのチェックボックスを選択し、アクション=削除を選択して送信を押します。
これは、数千の製品に非常に適している場合があります。

3
MagePsycho

魅力のように働いた...

PHP phpmyadmin-上部にあるデータベース(magento)SWLを選択し、次のものを貼り付けます。

DELETE FROM `catalog_product_entity`
2
Jake
Mage::getModel('catalog/product')->getCollection()->delete();
2
Shack Ro

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;
1
krishna singh

私の意見で最もクリーンな解決策はこれです:

  • System -> Index Managementに移動し、すべてのインデックスを「手動更新」インデックスモードに設定します
  • Catalog -> Manage Productsに移動し、すべての製品を選択し、Deleteアクションを使用してすべての製品を削除します。

これはデータベースから手動で製品を削除するほど速くはありませんが、孤立したデータベースエントリや外部キーの競合を心配する必要がないすべての製品を削除するためのおそらく最も速い適切な方法です。

0
Louis B.