การล้าง Magento หลังจากการทดสอบ


75

ขณะนี้ฉันกำลังทำการทดสอบมากมายใน Magento เพื่อที่ฉันจะได้คุ้นเคยกับมัน โชคไม่ดีที่ฐานข้อมูลของฉันเต็มไปด้วยการทดสอบ ฉันต้องการล้างฐานข้อมูลเพื่อเริ่มต้นใหม่อีกครั้ง นี่หมายถึงการทำสิ่งต่อไปนี้:

  • การล้างผลิตภัณฑ์ทั้งหมด
  • การล้างแอตทริบิวต์ทั้งหมด
  • การล้างชุดแอ็ตทริบิวต์ทั้งหมด
  • การล้างหมวดหมู่ทั้งหมด
  • การหักล้างคำสั่งซื้อการจัดส่งธุรกรรมทั้งหมดเป็นต้น

ฉันได้พบโพสต์ในฟอรัม Magento เพื่อล้างผลิตภัณฑ์ซึ่งเป็น SQL ต่อไปนี้:

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;

ฉันจะต้องเหมือนกันสำหรับคนอื่น ๆ ที่กล่าวถึง น่าเสียดายที่ฉันไม่รู้ว่าตารางใดกำลังเก็บข้อมูลที่แตกต่างกันทั้งหมดไม่เช่นนั้นฉันจะทำเอง ฉันไม่ต้องการล้างตารางผิดโดยไม่ตั้งใจ ฉันหวังว่าคุณสามารถช่วยฉัน!


คุณยังต้องการข้อมูลใดจากฐานข้อมูลการทดสอบของคุณ คุณพิจารณาการส่งออกข้อมูลนั้น (ตัวอย่างเช่นการกำหนดค่าของคุณcore_config_data) และเริ่มใหม่อีกครั้งหรือไม่
อเล็กซ์

1
ดูที่github.com/netz98/n98-magerun#stripped-database-dump - ซึ่งช่วยให้คุณสามารถส่งออกฐานข้อมูลโดยไม่มีคำสั่งซื้อ ฯลฯ จากนั้นคุณสามารถนำเข้าอีกครั้ง
อเล็กซ์

@Alex ฉันไม่แน่ใจว่าจะเก็บอะไรเพราะฉันได้รับสิ่งนี้จากบุคคลที่สามที่สร้างฐานของร้านค้า ฉันจำเป็นต้องพัฒนาต่อไปด้วยตัวเอง แต่ฉันไม่แน่ใจทั้งหมดว่าฉันจะทิ้งอะไรไปได้บ้าง นอกจากนี้ฉันจะตรวจสอบลิงก์ที่คุณให้
Deep Frozen

ฉันบังเอิญลบคุณสมบัติทั้งหมดออกไป รวมถึงระบบ Magento ตอนนี้ฉันไม่สามารถสร้างผลิตภัณฑ์ได้ มีวิธีเพียงเพื่อกู้คืนแอตทริบิวต์ระบบหลักของวีโอไอพีที่เป็นค่าเริ่มต้นหรือไม่?
Jelly_Doughnut

@Jelly_Doughnut ฉันขอแนะนำให้ถามคำถามแยกต่างหาก
Kristof ที่ Fooman

คำตอบ:


98
    ***********for categories********************
TRUNCATE TABLE `catalog_category_entity`;
TRUNCATE TABLE `catalog_category_entity_datetime`;
TRUNCATE TABLE `catalog_category_entity_decimal`;
TRUNCATE TABLE `catalog_category_entity_int`;
TRUNCATE TABLE `catalog_category_entity_text`;
TRUNCATE TABLE `catalog_category_entity_varchar`;
TRUNCATE TABLE `catalog_category_product`;
TRUNCATE TABLE `catalog_category_product_index`;

INSERT  INTO `catalog_category_entity`(`entity_id`,`entity_type_id`,`attribute_set_id`,`parent_id`,`created_at`,`updated_at`,`path`,`POSITION`,`level`,`children_count`) VALUES (1,3,0,0,'0000-00-00 00:00:00','2009-02-20 00:25:34','1',1,0,1),(2,3,3,0,'2009-02-20 00:25:34','2009-02-20 00:25:34','1/2',1,1,0);
INSERT  INTO `catalog_category_entity_int`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,32,0,2,1),(2,3,32,1,2,1);
INSERT  INTO `catalog_category_entity_varchar`(`value_id`,`entity_type_id`,`attribute_id`,`store_id`,`entity_id`,`value`) VALUES (1,3,31,0,1,'Root Catalog'),(2,3,33,0,1,'root-catalog'),(3,3,31,0,2,'Default Category'),(4,3,39,0,2,'PRODUCTS'),(5,3,33,0,2,'default-category');

    *****************for customers*****************


    SET FOREIGN_KEY_CHECKS=0;
-- reset customers
TRUNCATE customer_address_entity;
TRUNCATE customer_address_entity_datetime;
TRUNCATE customer_address_entity_decimal;
TRUNCATE customer_address_entity_int;
TRUNCATE customer_address_entity_text;
TRUNCATE customer_address_entity_varchar;
TRUNCATE customer_entity;
TRUNCATE customer_entity_datetime;
TRUNCATE customer_entity_decimal;
TRUNCATE customer_entity_int;
TRUNCATE customer_entity_text;
TRUNCATE customer_entity_varchar;
TRUNCATE log_customer;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;

ALTER TABLE customer_address_entity AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_datetime AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_decimal AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_int AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_text AUTO_INCREMENT=1;
ALTER TABLE customer_address_entity_varchar AUTO_INCREMENT=1;
ALTER TABLE customer_entity AUTO_INCREMENT=1;
ALTER TABLE customer_entity_datetime AUTO_INCREMENT=1;
ALTER TABLE customer_entity_decimal AUTO_INCREMENT=1;
ALTER TABLE customer_entity_int AUTO_INCREMENT=1;
ALTER TABLE customer_entity_text AUTO_INCREMENT=1;
ALTER TABLE customer_entity_varchar AUTO_INCREMENT=1;
ALTER TABLE log_customer AUTO_INCREMENT=1;
ALTER TABLE log_visitor AUTO_INCREMENT=1;
ALTER TABLE log_visitor_info AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

สำหรับการสั่งซื้อ

    SET FOREIGN_KEY_CHECKS=0; 
TRUNCATE `sales_flat_creditmemo`; 
TRUNCATE `sales_flat_creditmemo_comment`; 
TRUNCATE `sales_flat_creditmemo_grid`; 
TRUNCATE `sales_flat_creditmemo_item`; 
TRUNCATE `sales_flat_invoice`; 
TRUNCATE `sales_flat_invoice_comment`; 
TRUNCATE `sales_flat_invoice_grid`; 
TRUNCATE `sales_flat_invoice_item`; 
TRUNCATE `sales_flat_order`; 
TRUNCATE `sales_flat_order_address`; 
TRUNCATE `sales_flat_order_grid`; 
TRUNCATE `sales_flat_order_item`; 
TRUNCATE `sales_flat_order_payment`; 
TRUNCATE `sales_flat_order_status_history`; 
TRUNCATE `sales_flat_quote`; 
TRUNCATE `sales_flat_quote_address`; 
TRUNCATE `sales_flat_quote_address_item`; 
TRUNCATE `sales_flat_quote_item`; 
TRUNCATE `sales_flat_quote_item_option`; 
TRUNCATE `sales_flat_quote_payment`; 
TRUNCATE `sales_flat_quote_shipping_rate`; 
TRUNCATE `sales_flat_shipment`; 
TRUNCATE `sales_flat_shipment_comment`; 
TRUNCATE `sales_flat_shipment_grid`; 
TRUNCATE `sales_flat_shipment_item`; 
TRUNCATE `sales_flat_shipment_track`; 
TRUNCATE `sales_invoiced_aggregated`; 
TRUNCATE `sales_invoiced_aggregated_order`; 
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_order_aggregated_created`; 
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
TRUNCATE `sendfriend_log`; 
TRUNCATE `tag`; 
TRUNCATE `tag_relation`; 
TRUNCATE `tag_summary`; 
TRUNCATE `wishlist`; 
TRUNCATE `log_quote`; 
TRUNCATE `report_event`; 
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1; 
ALTER TABLE `tag` AUTO_INCREMENT=1; 
ALTER TABLE `tag_relation` AUTO_INCREMENT=1; 
ALTER TABLE `tag_summary` AUTO_INCREMENT=1; 
ALTER TABLE `wishlist` AUTO_INCREMENT=1; 
ALTER TABLE `log_quote` AUTO_INCREMENT=1; 
ALTER TABLE `report_event` AUTO_INCREMENT=1; 
SET FOREIGN_KEY_CHECKS=1;

คุณสามารถใช้ฟังก์ชันนี้เพื่อลบชุดแอตทริบิวต์

 $resource = Mage::getSingleton('core/resource');
$db_read = $resource->getConnection('core_read');

$attribute_sets = $db_read->fetchCol("SELECT attribute_set_id FROM " . $resource->getTableName("eav_attribute_set") . " WHERE attribute_set_id<> 4 AND entity_type_id=4");
foreach ($attribute_sets as $attribute_set_id) {
    try {
        Mage::getModel("eav/entity_attribute_set")->load($attribute_set_id)->delete();
    } catch (Exception $e) {
        echo $e->getMessage() . "\n";
    }
}

และมองหาตารางนี้เพื่อลบแอตทริบิวต์

catalog_eav_attribute
eav_attribute
eav_attribute_set

ตรวจสอบeav_attributeคอลัมน์is_user_definedเพื่อรับแนวคิด


นี่คือสิ่งที่ฉันกำลังมองหา! คุณมีสำหรับชุดคุณลักษณะและชุดคุณสมบัติหรือไม่?
Deep Frozen

ไม่ฉันไม่มี sql สำหรับชุดแอตทริบิวต์และชุดแอตทริบิวต์คุณสามารถลบชุดแอตทริบิวต์และชุดแอตทริบิวต์ของคุณได้ด้วยตนเองหากไม่มีรายการมาก
Mufaddal

น่าเสียดายที่มีพวกมันมากมาย อย่างไรก็ตามขอบคุณสำหรับสิ่งเหล่านี้มันจะช่วยได้อย่างแน่นอน! ฉันจะต้องไปหาพวกเขาเพื่อหาคุณลักษณะด้วยตัวเองฉันเดา
Deep Frozen

@Rune ตรวจสอบคำตอบที่อัปเดตแล้วของฉัน
Mufaddal

2
หมายเหตุเกี่ยวกับองค์กรคุณต้องตัดทอน: enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_address enterprise_sales_order_grid_archive
Tegan Snyder

19

คุณสามารถล้างฐานข้อมูลทั้งหมดและ Magento จะเรียกใช้สคริปต์การติดตั้ง / อัปเกรด / ข้อมูลทั้งหมดอีกครั้งในการโหลดหน้าถัดไป การทำเช่นนี้จะทำให้วีโอไอพี "รีเซ็ตเป็นโรงงาน" และจะทำลายการเปลี่ยนแปลงทั้งหมดของคุณ

นิสัยที่ดีคือการสร้างโมดูลที่มีการตั้งค่าร้านค้าพื้นฐานทั้งหมดของคุณภายในสคริปต์การติดตั้ง / อัพเกรด / ข้อมูล สิ่งนี้มีประโยชน์ที่การตั้งค่าเหล่านี้จะถูกเก็บไว้ในการควบคุมเวอร์ชันและเว็บไซต์ต่าง ๆ ทั้งหมดที่คุณมีสำหรับร้านค้า (การผลิตการจัดเตรียมการทดสอบการยอมรับของผู้ใช้เป็นต้น) จะได้รับการอัปเดต

หากมีบุคคลหลายคนทำงานในไซต์เรายังสร้างโมดูลใหม่สำหรับทุกกลุ่มการตั้งค่าเพื่อให้เวอร์ชันไม่ขัดแย้งกันเมื่อเรารวมรหัส

ในกรณีของคุณฉันจะสร้างโมดูลที่ตั้งค่าการตั้งค่าทั้งหมดที่คุณต้องการเก็บไว้ หากคุณลบฐานข้อมูล Magento จะทำความสะอาดอย่างสมบูรณ์และรวมถึงการตั้งค่าที่คุณต้องการ!

คุณสามารถดูสคริปต์การติดตั้ง / อัปเกรดของ Core Magento เพื่อดูว่า Magento ติดตั้งเป็นข้อมูล / การตั้งค่าเริ่มต้นอย่างไร


3
นี่เป็นความคิดที่ดีมีเพียงปัญหาเดียว: หากคุณติดตั้งส่วนขยายแล้วคุณอาจพบปัญหาว่าส่วนขยายนั้นไม่ได้ทำการทดสอบด้วยวิธีนี้เพื่อให้เกิดข้อผิดพลาดเนื่องจากสคริปต์การติดตั้งของโมดูลจะทำงานก่อนโมดูลอื่น ๆ การพึ่งพาไม่เป็นจริง แต่ฉันก็ชอบวิธีนี้เหมือนกัน
Fabian Blechschmidt

คุณอธิบายได้ไหม หากคุณกำลังแทรกการตั้งค่าตามโมดูลของบุคคลที่สามในโมดูลของคุณเองเพียงแค่ประกาศโมดูลของบุคคลที่สามเป็นการอ้างอิง (ในแอป / etc / module.xml) ของคุณและโมดูลการติดตั้ง / อัปเกรดของคุณจะทำงานหลังจากที่สาม - โมดูลของบุคคลที่
Erfan

1
ใช่ แต่ถ้าโมดูลบุคคลที่สามไม่ทำเช่นนั้นหรือแทรกข้อมูลในการติดตั้งแทนสคริปต์ข้อมูลคุณอาจพบปัญหาเนื่องจากการสั่งซื้อ ในกรณีส่วนใหญ่นักพัฒนาถือว่าวีโอไอพีที่ติดตั้งอยู่แล้ว ;-)
Fabian Blechschmidt

1
ปัญหาที่อาจเกิดขึ้นอีกประการหนึ่งคือคุณอาจต้องการรักษาการตั้งค่าคอนฟิเกอเรชันและ / หรือเนื้อหา CMS ดังนั้นจะต้องมีการสำรองและนำเข้าอีกครั้งหลังจากล้างฐานข้อมูลทั้งหมด
davidalger

1
@davidalger จุดของโมดูลการตั้งค่าเหล่านี้คือการเก็บการตั้งค่าคอนฟิเกอเรชันและ / หรือเนื้อหา CMS ดังนั้นคุณไม่จำเป็นต้องนำเข้าอีกครั้ง เช่นคุณสามารถเพิ่มหน้า CMS ในสคริปต์ข้อมูลของคุณเพื่อให้พวกเขาแทรกอีกครั้งโดยอัตโนมัติหลังจากที่คุณล้างฐานข้อมูล
Erfan

7

หากคุณไม่ต้องการอะไรเลยเพียงแค่ล้างฐานข้อมูลทั้งหมดแล้วทำการติดตั้งใหม่อีกครั้ง

การตัดทอนจำนวนมากมักทำให้ฉันกังวลใจกับผลกระทบที่อาจเกิดขึ้นจากความสัมพันธ์ที่แตกหัก

การล้าง DB อย่างรวดเร็ว

นี้โดยใช้สคริปต์ ,

cd /path/to/my/magento/store
wget -O mage-dbpurge.sh sys.sonassi.com/mage-dbpurge.sh
chmod +x mage-dbpurge.sh
./mage-dbpurge.sh

Are you 100% sure you want to purge $DBNAME? [y/N]: y
Are you 110% sure you want to purge $DBNAME? [y/N]: y

MYSQL DB PURGE COMPLETE

ที่จะว่างเปล่าและลบทุกตารางในฐานข้อมูล ไม่ได้ใช้มันถ้าคุณต้องการที่จะรักษาอะไร


ส่วนใหญ่เหล่านี้ได้รับร่างจริง ๆ เริ่มต้นด้วยการปิดการอ้างอิงคีย์ต่างประเทศ ฐานข้อมูลเชิงสัมพันธ์ไม่ควรลบทุกอย่างโดยอัตโนมัติหากคุณเช่นลบผลิตภัณฑ์หลักคำสั่งขายกุญแจ ฯลฯ ขณะที่การพึ่งพาคีย์ต่างประเทศมีการใช้งานเป็นบันทึกทั้งหมดในตารางอ้างอิงทั้งหมดลบด้วยรายการระดับบนสุด? จะทำอย่างไรถ้าคุณพลาดชื่อตารางในรายการตัดที่ทำโดยปิดความสัมพันธ์กับคีย์ต่างประเทศ เว็บไซต์ MagentoCommerce มีความรุ่งโรจน์พร้อมข้อความผิดพลาดแปลก ๆ ที่ปรากฎหลังจากล้างข้อมูลจำนวนมาก
Fiasco Labs

ดูที่สคริปต์ของเขามันจะลดลงทุกโต๊ะแน่นอน สำหรับการปิดการใช้งานการตรวจสอบกุญแจต่างประเทศคุณจำเป็นต้องใช้เพื่อที่คุณจะได้ไม่ต้องคิดคำสั่งที่เหมาะสมในการวางตารางทั้งหมด
Lee Saferite

@ LeeSaferite - ฉันคิดว่า FiascoLabs อ้างถึงโซลูชันอื่น ๆ ที่นำเสนอโซลูชันแบบตัดทอนอย่างเดียวกับข้อ จำกัด ทั้งหมดที่ฉันแนะนำ
Ben Lessani - Sonassi

สิ่งที่ฉันหมายถึง!
Fiasco Labs

7

ก่อนที่จะเปิดตัวเว็บไซต์ใหม่ของ Magento eCommerce ในขั้นตอนการพัฒนาคุณจะต้องทำการทดสอบและจะต้องสร้างคำสั่งทดสอบและลูกค้าเพื่อให้แน่ใจว่ากระบวนการทั้งหมดทำงานได้อย่างถูกต้องตามที่คุณคาดหวัง

ซึ่งมักจะทำให้ข้อมูลการทดสอบโหลดในระบบที่คุณไม่ต้องการเมื่อเปิดตัวเว็บไซต์ Magento มีชื่อเสียงในการแทรกข้อมูลในตารางฐานข้อมูลหลายตารางดังนั้นเราจึงได้จัดทำสคริปต์ SQL ด้านล่างซึ่งจะลบข้อมูลทั้งหมดนี้ออกจากฐานข้อมูล Magento ของคุณอย่างหมดจด (และรีเซ็ตเคาน์เตอร์เพิ่มสำหรับการขายใบแจ้งหนี้ลูกค้าและการจัดส่ง) สิ่งนี้ได้รับการทดสอบและยืนยันว่าใช้งานได้กับเวอร์ชั่น Magento จาก 1.4.0.1 ถึง 1.9.0.1

#Tested on Magento CE 1.4.1.1 - 1.9.0.1

SET FOREIGN_KEY_CHECKS=0;

##############################
# SALES RELATED TABLES
##############################
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_invoiced_aggregated`;            # ??
TRUNCATE `sales_invoiced_aggregated_order`;        # ??
TRUNCATE `log_quote`;

ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;

#########################################
# DOWNLOADABLE PURCHASED
#########################################
TRUNCATE `downloadable_link_purchased`;
TRUNCATE `downloadable_link_purchased_item`;

ALTER TABLE `downloadable_link_purchased` AUTO_INCREMENT=1;
ALTER TABLE `downloadable_link_purchased_item` AUTO_INCREMENT=1;

#########################################
# RESET ID COUNTERS
#########################################
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;


##############################
# CUSTOMER RELATED TABLES
##############################
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `tag_properties`;            ## CHECK ME
TRUNCATE `wishlist`;
TRUNCATE `log_customer`;

ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `tag_properties` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;


##############################
# ADDITIONAL LOGS
##############################
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `report_event`;
TRUNCATE `report_viewed_product_index`;
TRUNCATE `sendfriend_log`;
### ??? TRUNCATE `log_summary`

ALTER TABLE `log_url` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
ALTER TABLE `report_viewed_product_index` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
### ??? ALTER TABLE `log_summary` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS=1;

5

หากคุณทำงานกับ EE คุณควรตัดทอนตารางการเขียน URL ขององค์กรอีกครั้งเนื่องจากไม่มีข้อ จำกัด คีย์ต่างประเทศและในการนำเข้าข้อมูล (แต่ไม่ได้ตั้งค่า URL อย่างชัดเจน) URL ของผลิตภัณฑ์เก่าจะเชื่อมต่อกับการนำเข้าใหม่ของคุณ ผลิตภัณฑ์

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `catalog_product_entity_url_key`;
TRUNCATE TABLE `catalog_category_entity_url_key`;
TRUNCATE TABLE `enterprise_url_rewrite`;
TRUNCATE TABLE `enterprise_url_rewrite_product_cl`;
TRUNCATE TABLE `enterprise_url_rewrite_category_cl`;
TRUNCATE TABLE `enterprise_catalog_category_rewrite`;
SET FOREIGN_KEY_CHECKS = 1;

4

สิ่งหนึ่งที่ไม่มีใครพูดถึงคือการล้างตารางภาษี หากไม่มีคุณจะได้รับรายการรหัสคำสั่งซื้อซ้ำในตารางภาษี (เมื่อคุณสั่งซื้ออีกครั้งที่รหัสคำสั่งเริ่มต้นคุณจะมีรหัสเดียวกันปรากฏขึ้นหลายครั้ง) รายการหลายรายการจะแสดงในใบแจ้งหนี้ / บันทึกเป็นรายการโฆษณาหลายรายการทั้งในด้านผู้ดูแลระบบและลูกค้า หลังจากการทดสอบ / การล้างโดยใช้วิธีการในโพสต์ข้างต้น (และไม่ได้ล้างตารางภาษี) หลังจากนั้นไม่นานฉันก็มีรายการภาษี 10 รายการที่แตกต่างกันปรากฏขึ้นสำหรับคำสั่งเดียว

หมายเหตุ - ภาษีถูก / ยังคงถูกเรียกเก็บเงินอย่างถูกต้อง แต่ในบันทึกและใบแจ้งหนี้ที่แสดงรายการทั้งหมด สับสนมากหากลูกค้าเห็นว่า

ดังนั้นการเพิ่มไปด้านบน:

TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 

และสำหรับการวัดที่ดี:

TRUNCATE `sales_payment_transaction`;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 

2

คุณควรมี db แยกต่างหากสำหรับการทดสอบ ดูกรอบการทดสอบคุณภาพเยี่ยม แนวคิดทั้งหมดในการล้าง db หลังจากการทดสอบนั้นไม่ถูกต้อง


2

ฉันตั้งค่าที่เก็บข้อมูลสำหรับการบำรุงรักษาสคริปต์ SQL ให้ทำงานก่อนที่จะเปิดเว็บไซต์ Magento ใหม่ จนถึงตอนนี้พวกเขาสามารถช่วย:

  1. ข้อมูลการทดสอบที่ว่างเปล่าจาก Mage; คำสั่งซื้อลูกค้ารายงานบันทึก ฯลฯ
  2. ข้อมูลการทดสอบที่ว่างเปล่าจากส่วนขยายต่างๆ
  3. ตั้งรหัสที่ต้องการสำหรับการสั่งซื้อใบแจ้งหนี้การจัดส่งและเครดิตครั้งต่อไป

https://github.com/ccondrup/mage-reset
ช่วยปรับปรุงพวกเขา!


สคริปต์เหล่านั้นยอดเยี่ยม แต่มีรุ่น MySQL ที่ควรใช้ด้วยหรือไม่ ฉันลองบนเซิร์ฟเวอร์ที่มีเวอร์ชัน MySQL ต่ำกว่าในกล่อง dev ของฉันและฉันได้รับนี้: ข้อผิดพลาด 1064 (42000) ที่บรรทัดที่ 160: คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ; ตรวจสอบคู่มือที่สอดคล้องกับรุ่นเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่ถูกต้องที่จะใช้ใกล้กับ 'DELIMITER || ขั้นตอนการวางหากมีอยู่ccdata_empty_testdata|| นี่อาจเป็นฉัน แต่เป็นสคริปต์ที่ยอดเยี่ยม !!!
แมวของ Henry

@ Henry'sCat Thanks - ฉันเดาว่าถ้าใช้ MySQL เวอร์ชันเก่ามากมันอาจไม่สนับสนุนคำสั่ง DELIMITER ฉันไม่พบรุ่น MySQL ที่มีการเปิดตัวลองใน MySQL CLI ถ้าใช้งานได้อาจเป็นเพียงเรื่องของการสิ้นสุดบรรทัดในสคริปต์
ccondrup

2

แค่ 2 เซ็นต์ของฉัน ...

แทนที่จะค้นหาสิ่งที่จะลบและรู้เพียงว่าสิ่งที่ฉันพลาดไปในภายหลังฉันใช้ VMs สองสามตัวและฉันใช้สแน็ปช็อตในขั้นตอนต่าง ๆ รวมทั้งฉันมีไซต์แยกกันสองไซต์ - หนึ่งการทดสอบสดและการทดสอบเดียว

มันง่ายที่จะมีสคริปต์เพื่อ "คืนค่า" การทดสอบจาก live เมื่อฉันต้องการ นอกจากนี้หากลูกค้าสามารถเข้าถึงระบบทดสอบพวกเขาสามารถเล่นกับมันก่อนที่จะทำอะไรกับชีวิต - ไม่จำเป็นต้องเรียกคืนจากการสำรองข้อมูลและการสูญเสียคำสั่งซื้อและการเปลี่ยนแปลงอื่น ๆ ในกระบวนการ ( แม้ว่าจะทดสอบกลยุทธ์การสำรองข้อมูลของคุณ .. . )

ฉันคิดว่านี่เป็นกระบวนการที่ดีกว่าและปลอดภัยกว่าการเรียกใช้สคริปต์ที่กำหนดเอง (ล้าสมัยหรือไม่) เพื่อลบ (มากเกินไปหรือไม่) ...

(นอกจากนี้อย่าลังเลที่จะลงคะแนนเพราะฉันยังไม่สามารถแสดงความคิดเห็นได้!)


1

MySQL วางและสร้างฐานข้อมูลจากนั้นเพิ่มสิทธิ์ผู้ใช้และผู้ใช้ผู้ดูแลระบบวีโอไอพี

DROP DATABASE <dbname>;
CREATE DATABASE <dbname>;
GRANT ALL PRIVILEGES ON <dbname>.* TO <dbusr>@localhost IDENTIFIED BY '<dbusr_pass>';
FLUSH PRIVILEGES;

เพิ่มผู้ใช้ผู้ดูแลระบบ Magento:

USE DB_NAME;
LOCK TABLES `admin_role` WRITE , `admin_user` WRITE;
SET @SALT = "rp";
SET @PASS = CONCAT(MD5(CONCAT( @SALT , "ADMIN_PASSWORD") ), CONCAT(":", @SALT ));
SELECT @EXTRA := MAX(extra) FROM admin_user WHERE extra IS NOT NULL;
INSERT INTO `admin_user` (firstname,lastname,email,username,password,created,lognum,reload_acl_flag,is_active,extra,rp_token_created_at) VALUES ('Firstname','Lastname','email@example.com','USER_NAME',@PASS,NOW(),0,0,1,@EXTRA,NOW());
INSERT INTO `admin_role` (parent_id,tree_level,sort_order,role_type,user_id,role_name) VALUES (1,2,0,'U',(SELECT user_id FROM admin_user WHERE username = 'USER_NAME'),'Firstname');
UNLOCK TABLES;

1

จากคำตอบของ Mufaddal ฉันได้เตรียมแบบสอบถามเพื่อล้างคำสั่งซื้อและข้อมูลที่เกี่ยวข้องใน Magento 2.2

SET FOREIGN_KEY_CHECKS=0; 
TRUNCATE `sales_creditmemo`; 
TRUNCATE `sales_creditmemo_comment`; 
TRUNCATE `sales_creditmemo_grid`; 
TRUNCATE `sales_creditmemo_item`; 
TRUNCATE `sales_invoice`; 
TRUNCATE `sales_invoice_comment`; 
TRUNCATE `sales_invoice_grid`; 
TRUNCATE `sales_invoice_item`; 
TRUNCATE `sales_order`; 
TRUNCATE `sales_order_address`; 
TRUNCATE `sales_order_grid`; 
TRUNCATE `sales_order_item`; 
TRUNCATE `sales_order_payment`; 
TRUNCATE `sales_order_status_history`; 
TRUNCATE `quote`; 
TRUNCATE `quote_address`; 
TRUNCATE `quote_address_item`; 
TRUNCATE `quote_item`; 
TRUNCATE `quote_item_option`; 
TRUNCATE `quote_payment`; 
TRUNCATE `quote_shipping_rate`; 
TRUNCATE `sales_shipment`; 
TRUNCATE `sales_shipment_comment`; 
TRUNCATE `sales_shipment_grid`; 
TRUNCATE `sales_shipment_item`; 
TRUNCATE `sales_shipment_track`; 
TRUNCATE `sales_invoiced_aggregated`; 
TRUNCATE `sales_invoiced_aggregated_order`; 
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_order_aggregated_created`; 
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;
TRUNCATE `sendfriend_log`; 
TRUNCATE `cache_tag`;
-- TRUNCATE `tag`;
-- TRUNCATE `tag_relation`;
-- TRUNCATE `tag_summary`;
TRUNCATE `wishlist`; 
-- TRUNCATE `log_quote`;
-- TRUNCATE `report_event`;
ALTER TABLE `sales_creditmemo` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_creditmemo_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoice_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_address` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_payment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_status_history` AUTO_INCREMENT=1; 
ALTER TABLE `quote` AUTO_INCREMENT=1; 
ALTER TABLE `quote_address` AUTO_INCREMENT=1; 
ALTER TABLE `quote_address_item` AUTO_INCREMENT=1; 
ALTER TABLE `quote_item` AUTO_INCREMENT=1; 
ALTER TABLE `quote_item_option` AUTO_INCREMENT=1; 
ALTER TABLE `quote_payment` AUTO_INCREMENT=1; 
ALTER TABLE `quote_shipping_rate` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_comment` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_grid` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_item` AUTO_INCREMENT=1; 
ALTER TABLE `sales_shipment_track` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1; 
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1; 
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1; 
ALTER TABLE `sales_order_tax_item` AUTO_INCREMENT=1; 
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1; 
-- ALTER TABLE `tag` AUTO_INCREMENT=1;
-- ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
-- ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `cache_tag` AUTO_INCREMENT=1;
-- ALTER TABLE `wishlist` AUTO_INCREMENT=1;
-- ALTER TABLE `log_quote` AUTO_INCREMENT=1;
-- ALTER TABLE `report_event` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

0

เพียงรับ phpMyadmin ฐานข้อมูลของคุณแล้วเปิดตารางsales_flat_orderจากนั้นเพียงแค่ลบข้อมูล tha จากตารางนี้และคำสั่งทดสอบของคุณจะถูกล้าง ไม่จำเป็นต้องใช้รหัสคำสั่งหรือส่วนขยายใด ๆ เย็น.


0

นี่เป็นคำตอบที่ช้า แต่อาจเป็นประโยชน์

ฉันกำลังพัฒนาเว็บไซต์อีคอมเมิร์ซโดยใช้ Magento 1.7 และฉันมักจะใช้ TDD

ฉันคิดว่าเราไม่ควรกังวลกับการล้างฐานข้อมูลด้วยตนเองในขณะที่เราสามารถใช้ Magento beginTransactionและrollbackวิธีการต่างๆได้

นี่คือตัวอย่าง

public function setUp()
{
    parent::setUp();
    /** @var Mage_Core_Model_Resource $core */
    $core = Mage::getSingleton('core/resource');
    $core->getConnection('default_write')->beginTransaction();
}

public function tearDown()
{
    parent::tearDown();
    /** @var Mage_Core_Model_Resource $core */
    $core = Mage::getSingleton('core/resource');
    $core->getConnection('default_write')->rollBack();
    Mage::reset();
}

คำตอบนี้ได้รับแรงบันดาลใจจากคำตอบ Magento นี้โปรดเยี่ยมชมเพื่ออ่านเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.