Magento'nun testten sonra temizlenmesi


75

Şu anda Magento'da birçok test yapıyorum, bu yüzden aşina olabilmek için. Maalesef, veritabanı testlerimle oldukça karışık. Veritabanını silmek istiyorum, böylece tekrar başlayacağım. Bu, aşağıdakileri yapmak anlamına gelir:

  • Tüm ürünlerin temizlenmesi
  • Tüm özellikleri temizleme
  • Tüm özellik kümelerini temizleme
  • Tüm kategorileri temizleme
  • Tüm siparişlerin, gönderilerin, işlemlerin vs. silinmesi

Aşağıdaki SQL olan ürünleri temizlemek için Magento forumlarında bir yazı buldum:

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;

Bahsettiğim diğerleri için de aynı şeye ihtiyacım var. Ne yazık ki, hangi tabloların tüm farklı verileri tuttuğunu bilmiyorum, aksi takdirde kendim yapardım. Ayrıca yanlış masaları tesadüfen temizlemek istemiyorum. Umarım bana yardım edebilirsin!


Test veritabanınızdan hangi verilere hala ihtiyacınız var? Bu verileri dışa aktarmayı düşündünüz mü (örneğin konfigürasyonunuz core_config_data) ve tekrar baştan başladınız mı?
Alex,

1
Ayrıca github.com/netz98/n98-magerun#stripped-database-dump dosyasına bir göz atın - bu işlem veritabanını sipariş vermeden dışa aktarmanıza olanak tanır ve sonra yeniden içe aktarabilirsiniz.
Alex,

@Alex Ne tutacağımdan emin değilim çünkü bunu dükkanın tabanını yapan üçüncü bir şahıstan aldım. Kendimi geliştirmeye devam etmeliyim, ama neyi atıp atabileceğimden tam olarak emin değilim. Ayrıca, verdiğin bağlantıya bakacağım.
Derin Dondurulmuş

Yanlışlıkla tüm nitelikleri temizledim. Magento Sistemi öznitelikleri dahil. Artık ürün oluşturamıyorum. Yalnızca varsayılan Magento çekirdek sistemi özniteliklerini geri yüklemek için bir yol var mı?
Jelly_Doughnut

@Jelly_Doughnut Ayrı bir soru sormanızı öneririm
Fooman'da Kristof

Yanıtlar:


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;

Siparişleriniz için

    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;

Özellik kümelerini silmek için bu işlevi kullanabilirsiniz.

 $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";
    }
}

Özniteliği kaldırmak için bu tabloya bakın

catalog_eav_attribute
eav_attribute
eav_attribute_set

Bazı fikir edinmek için eav_attributesütunu kontrol edin is_user_defined.


Bu tam olarak aradığım şey! Nitelikler ve nitelik setleri için sizde var mı?
Derin Dondurulmuş

Hayır, nitelik ve nitelik kümeleri için
sql'im

Ne yazık ki birçoğu var. Neyse, bunlar için teşekkür ederim, kesinlikle yardımcı olacaktır! Onları sanırım kendi özellikleri için bulmam gerekecek.
Derin Dondurulmuş

Tamam @Rune benim güncellenmiş cevabı kontrol et
Mufaddal

2
Enterprise hakkında not da kesmeniz gerekir: enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_address enterprise_sales_order_grid_archive
Tegan Snyder

19

Tüm veritabanını boşaltabilirsiniz ve Magento tüm yükleme / yükseltme / veri komut dosyalarını bir sonraki sayfa yükleme işleminde yeniden çalıştırır. Bu, Magento'yu "fabrika ayarlarına sıfırlar" ve tüm değişikliklerinizi mahveder.

Kurulum / yükseltme / veri komut dosyaları içindeki tüm temel mağaza ayarlarınızı içeren bir modül oluşturmak iyi bir alışkanlıktır. Bunun avantajı, bu ayarların sürüm kontrolünde saklanması ve mağaza için sahip olduğunuz tüm web sitelerinin (üretim, hazırlama, kullanıcı kabul testleri vb.) Güncel tutulmasıdır.

Bir sitede çalışan birden fazla kişi varsa, her ayar grubu için bile yeni bir modül yaratırız, böylece sürümler kodu birleştirirken çakışmaz.

Senin durumunda, saklamak istediğin tüm ayarları ayarlayan bir modül oluşturacağım. Veritabanını silerseniz, Magento tamamen temiz olacak ve istediğiniz ayarları da dahil olacak!

Magento'nun ilk verilerini / ayarlarını nasıl kurduğunu görmek için çekirdek Magento'nun kurulum / yükseltme komut dosyalarına bakabilirsiniz.


3
Bu iyi bir fikirdir, sadece bir sorun vardır: Eğer uzantıları yüklediyseniz, soruna rastlayabilirsiniz, bu şekilde test edilmezler, bu yüzden hata atarlar, çünkü modüllerin kurulum komut dosyaları diğer modüllerden önce çalıştırılır ve bağımlılıklar yerine getirilmemiştir. Ama ben de bu yöntemi seviyorum.
Fabian Blechschmidt

Bunu açıklayabilir misin? Kendi modülünüzde üçüncü taraf bir modüle dayalı bir ayar ekliyorsanız, üçüncü taraf modülünü bir bağımlılık (sadece app / etc / module.xml dosyasında) olarak tanımlayın; modüllerin kurulum / yükseltme komutları üçüncü parti modülleri.
Erfan

1
evet, ancak üçüncü parti modül bunu yapmazsa veya veri komut dosyaları yerine kurulumda veri eklerse, sipariş nedeniyle sorun yaşayabilirsiniz. Çoğu durumda, geliştiriciler, magento'nun zaten yüklü olduğunu varsayar ;-)
Fabian Blechschmidt 14.03

1
Diğer bir olası sorun, yapılandırma ayarlarını ve / veya CMS içeriğini korumak isteyebileceğinizdir. Bu yüzden veritabanını tamamen temizledikten sonra yedeklenmeli ve yeniden alınmalıdır.
davidalger

1
@davidalger, bu kurulum modüllerinin amacı yapılandırma ayarlarını ve / veya CMS içeriğini saklamaktır, böylece onları yeniden içe aktarmanıza gerek kalmaz. yani, veri komut dosyalarına CMS sayfaları ekleyebilirsiniz, böylece siz db'yi temizledikten sonra otomatik olarak tekrar eklenebilirler.
Erfan

7

Hiç bir şeye ihtiyacınız yoksa, tüm DB'yi boşaltın ve temiz bir yeniden kurun.

Kitlesel kesimleri çalıştırmak, her zaman kırılan kilit ilişkilerin olası kalıcı etkileri nedeniyle beni endişelendiriyor.

Hızlı db temizleme

Bu kullanma senaryoyu ,

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

Bu, veritabanındaki her bir tabloyu tamamen boşaltacaktır. Bir şey saklamanız gerekiyorsa kullanmayın .


Bunların çoğu gerçekten kabataslak oluyor. Yabancı anahtar bağımlılıklarını kapatmaya başlamak. Örneğin, anahtar ürünü, anahtar satış siparişini vb. Silerseniz, yabancı anahtar bağımlılıkları etkinken, referans verilen tüm tablolardaki tüm kayıtlar en üst seviye öğeyle sildikçe, ilişkisel bir veritabanının her şeyi otomatik olarak silmesi gerekmiyor mu? Yabancı kısma ilişkileri kapalıyken bu kısaltma listesindeki bir tablo adını kaçırırsanız ne olur? MagentoCommerce sitesi, bu kütle temizlendikten sonra ortaya çıkan garip hata mesajları ile doludur.
Fiasco Labs

Senaryosuna bakarsak, gerçekten her masayı bırakacak. Yabancı anahtar kontrollerini devre dışı bırakmak için, ihtiyacınız olan tüm masaları bırakmak için doğru sırayı bulmak zorunda değilsiniz.
Lee Saferite

@LeeSaferite - Bence FiascoLabs, önerdiğim toplam obliterasyona karşı sadece trunkate tip çözümler sunan diğer çözümlerden bahsediyordu .
Ben Lessani - Sonassi,

Aynen demek istediğim!
Fiasco Labs,

7

Yeni bir Magento e-Ticaret web sitesini başlatmadan önce, geliştirme aşamasında, her zaman test yapmak zorunda kalacaksınız ve bu, tüm işlemlerin doğru bir şekilde ve beklediğiniz gibi çalıştığından emin olmak için test siparişleri ve müşteriler oluşturmayı gerektirecektir.

Bu, genellikle site başlatıldıktan sonra istemeyeceğiniz bir test verileri yüklemesini bırakabilir. Magento, birden fazla veritabanı tablosuna veri eklemek için ünlü olduğundan, bu verileri Magento veritabanınızdan temiz bir şekilde silen (ve satışlar, faturalar, müşteriler ve sevkıyat için artış sayaçlarını sıfırlayan) aşağıdaki SQL komut dosyasını sağladık. Bu Magento versiyonlarında 1.4.0.1 ile 1.9.0.1 arasında çalıştığı test edildi ve onaylandı.

#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 ile çalışıyorsanız, yabancı anahtar kısıtlamaları bulunmadığından ve verileri aldığınızda (ancak açıkça URL'leri belirlemediğinizden) kurumsal url yeniden yazma tablolarını kesmelisiniz, eski ürünlerin URL'leri yeni içe aktarılan ürününüze bağlanacaktır. ürünleri.

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

Kimsenin bahsetmediği bir şey vergi tablolarını temizlemek. Bunu yapmazsanız, vergi tablosunda sipariş No girişlerini tekrar edersiniz (siparişi tekrar başlangıç ​​Sipariş No'una koyarsanız, aynı Id birden fazla kez gösterilir). Birden çok öğe hem yönetici hem de müşteri tarafında faturalarda / notlarda birden fazla satır öğesi olarak gösterilecektir. Yukarıdaki yazılardaki yöntemleri kullanarak test ettikten / temizledikten sonra (ve vergi tablolarını temizlemeden), bir süre sonra tek bir sipariş için 10 farklı vergi satır kalemim vardı.

Not - Vergi hala doğru bir şekilde tahsil edildi / borçlandırıldı, ancak faturalarda ve faturalarda tüm kalemleri gösteriyordu. Bir müşteri bunu görmek için çok kafa karıştırıcı.

Yani yukarıdakilere eklemek için:

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; 

Ve iyi bir önlem için:

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

2

Testler için ayrı bir db'ye sahip olmalısınız. Magento test çerçevesine bakınız. Testlerden sonra db'yi silmek için tüm fikirler yanlıştır.


2

Yeni bir Magento sitesi açmadan önce çalışacak basit SQL komut dosyalarını tutmak için bir havuz oluşturdum. Şimdiye kadar yardımcı olabilirler:

  1. Mage'den boş test verileri; siparişler, müşteriler, raporlar, günlükler vb.
  2. çeşitli uzantılardan boş test verileri
  3. Bir sonraki sipariş, fatura, sevkiyat ve alacaklar

https://github.com/ccondrup/mage-reset
Onları geliştirmelerine yardımcı olun!


Bu komut dosyaları harika, ancak çalıştırmaları gereken bir MySQL sürümü var mı? Dev box'ımdan daha düşük MySQL sürümüne sahip bir sunucuda denedim ve şunu aldım: 160 satırında ERROR 1064 (42000): SQL sözdiziminizde bir hata var; 'DELIMITER || DROP PROCEDURE IF EXISTS ccdata_empty_testdata|| yakınında kullanmak için doğru sözdiziminin MySQL sunucu sürümünüze karşılık gelen kılavuzuna bakın. Bu ben olabilirim, ama başka türlü büyük senaryo !!!
Henry'nin Kedisi

@ Henry'sCat Teşekkürler - Sanırım çok eski bir MySQL sürümü kullanıyorsanız DELIMITER komutunu desteklemeyebilir. Hangi MySQL versiyonunun tanıtıldığını bulamadım. MySQL CLI'da deneyin, eğer orada çalışırsa, sadece senaryodaki satır sonları meselesidir.
Aralık’ta

2

Sadece 2 sentim ...

Neyin silineceğini bulmaktan ziyade, daha sonra ne kaçırdığımı fark etmek yerine, birkaç VM çalıştırdım ve çeşitli aşamalarda anlık görüntüler kullanıyorum, artı iki ayrı sitem var - bir canlı ve bir test.

İhtiyacım olduğunda testi canlı olarak "geri yüklemek" için bir komut dosyası kullanmak kolaydır. Ayrıca, müşteri test sistemine erişebiliyorsa, canlı olan herhangi bir şey yapmadan önce de oynayabilir - bir yedeklemeden geri yükleme ve işlemdeki siparişleri ve diğer değişiklikleri kaybetmeye gerek yoktur ( yedekleme stratejinizi test etmesine rağmen). . )

Sanırım bu (çok mu?) Şeyleri silmek için özel (modası geçmiş?) Bir betiği çalıştırmaktan çok daha iyi ve "daha güvenli" bir işlem ...

(Ayrıca, henüz yorum yapamadığım için bunu oy vermekten çekinmeyin!)


1

MYSQL DB'yi bırakın ve yaratın, ardından kullanıcı ayrıcalıklarını ve magento admin kullanıcısını ekleyin.

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

Magento admin kullanıcısı ekle:

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'ın cevabına dayanarak Magento 2.2'deki siparişi ve ilgili verileri temizlemek için sorgu hazırladım.

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

Basitçe veritabanını phpMyadmin aldım ve sonra masayı açtıktan sonra bu tablodaki sales_flat_orderverileri silin ve test siparişleriniz silinecek. Herhangi bir kod, komut veya uzantıya gerek yok. güzel.


0

Bu geç bir cevap, ancak yardımcı olabilir.

Magento 1.7 tabanlı bir e-ticaret sitesi geliştiriyorum ve TDD'ye yöneliyorum.

Magento beginTransactionve rollbackyöntemleri kullanabilirken veritabanını elle temizleyerek rahatsız etmemeliyiz .

İşte bir örnek

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();
}

Bu cevap, bu Magento cevabından ilham aldı , daha fazla okumak için ziyaret edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.