Czyszczenie Magento po testach


75

Obecnie przeprowadzam wiele testów w Magento, aby się z tym zapoznać. Niestety baza danych jest bardzo zaśmiecona moimi testami. Chcę wyczyścić bazę danych, aby móc zacząć od nowa. Oznacza to wykonanie następujących czynności:

  • Usuwanie wszystkich produktów
  • Usuwanie wszystkich atrybutów
  • Czyszczenie wszystkich zestawów atrybutów
  • Czyszczenie wszystkich kategorii
  • Czyszczenie wszystkich zamówień, przesyłek, transakcji itp.

Znalazłem post na forach Magento do usuwania produktów, który jest następujący 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;

Potrzebowałbym tego samego dla pozostałych wymienionych. Niestety nie wiem, które tabele przechowują różne dane, w przeciwnym razie zrobiłbym to sam. Nie chcę też przypadkowo wyczyścić niewłaściwych tabel. Mam nadzieję że możesz mi pomóc!


Jakie dane z testowej bazy danych nadal potrzebujesz? Czy rozważałeś wyeksportowanie tych danych (na przykład konfiguracji core_config_data) i po prostu zacząć od nowa?
Alex

1
Zajrzyj również na github.com/netz98/n98-magerun#stripped-database-dump - pozwala to wyeksportować bazę danych bez zamówień itp., A następnie możesz ponownie zaimportować.
Alex

@Alex Nie jestem pewien, co zatrzymać, ponieważ dostałem to od strony trzeciej, która stała się podstawą sklepu. Muszę sam się nad tym rozwijać, ale nie jestem do końca pewien, co mogę po prostu wyrzucić, a co nie. Zajrzę również do podanego linku.
Głęboko mrożone

Przypadkowo właśnie wyczyściłem wszystkie atrybuty. W tym atrybuty systemu Magento. Nie mogę teraz tworzyć produktów. Czy istnieje sposób na przywrócenie domyślnych atrybutów systemu Magento?
Jelly_Doughnut

@Jelly_Doughnut Proponuję zadać osobne pytanie
Kristof z Fooman

Odpowiedzi:


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;

Dla zamówień

    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;

Możesz użyć tej funkcji do usuwania zestawów atrybutów.

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

I poszukaj tej tabeli, aby usunąć atrybut

catalog_eav_attribute
eav_attribute
eav_attribute_set

Sprawdź eav_attributekolumnę, is_user_definedaby uzyskać jakiś pomysł.


Właśnie tego szukam! Czy masz to również dla atrybutów i zestawów atrybutów?
Głęboko Kraina

Nie, nie mam sql dla atrybutów i zestawów atrybutów, możesz ręcznie usunąć swój atrybut i zestawy atrybutów, jeśli nie ma dużo wpisów
Mufaddal

Niestety jest ich dużo. W każdym razie dziękuję za to, to z pewnością pomoże! Chyba po prostu będę musiał je znaleźć dla atrybutów.
Głęboko Kraina

@Rune Ok sprawdź moją zaktualizowaną odpowiedź
Mufaddal

2
Uwaga dotycząca Enterprise musisz także obciąć: enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_address enterprise_sales_order_grid_archive
Tegan Snyder

19

Możesz po prostu opróżnić całą bazę danych, a Magento ponownie uruchomi wszystkie swoje skrypty instalacji / aktualizacji / danych przy następnym ładowaniu strony. Spowoduje to „przywrócenie ustawień fabrycznych” Magento i zniszczy wszystkie twoje zmiany.

Dobrym nawykiem jest tworzenie modułu zawierającego wszystkie podstawowe ustawienia sklepu w skryptach instalacyjnych / aktualizacyjnych / danych. Ma to tę zaletę, że ustawienia te są przechowywane w kontroli wersji, a wszystkie różne witryny internetowe dla sklepu (produkcja, inscenizacja, testy akceptacji użytkownika itp.) Będą aktualizowane.

Jeśli w witrynie pracuje wiele osób, tworzymy nawet nowy moduł dla każdej grupy ustawień, aby wersje nie kolidowały podczas scalania kodu.

W twoim przypadku stworzyłbym moduł, który konfiguruje wszystkie ustawienia, które chcesz zachować. Jeśli wyczyścisz bazę danych, Magento będzie całkowicie czysty ORAZ w tym odpowiednie ustawienia!

Możesz rzucić okiem na skrypty instalacyjne / aktualizacyjne podstawowego Magento, aby zobaczyć, jak Magento instaluje swoje początkowe dane / ustawienia.


3
To dobry pomysł, istnieje tylko jeden problem: jeśli masz zainstalowane rozszerzenia, możesz napotkać problem, że nie są one w ten sposób testowane, więc zgłaszają błędy, ponieważ skrypty instalacyjne modułów działają przed niektórymi innymi modułami i zależności nie są spełnione. Ale podoba mi się również ta metoda.
Fabian Blechschmidt

Czy możesz to wyjaśnić? Jeśli wstawiasz ustawienie oparte na module innej firmy we własnym module, po prostu zadeklaruj moduł innej firmy jako zależność (w aplikacji / etc / module.xml), a skrypty instalacji / aktualizacji modułów będą działać po trzeciej moduły imprezowe.
Erfan

1
tak, ale jeśli moduł innej firmy tego nie zrobi lub wstawi dane do instalacji zamiast skryptów danych, możesz mieć problemy z powodu zamówienia. W większości przypadków programiści zakładają, że Magento jest już zainstalowane ;-)
Fabian Blechschmidt

1
Innym potencjalnym problemem jest to, że możesz chcieć zachować ustawienia konfiguracji i / lub zawartość CMS. Aby to zrobić, należy wykonać kopię zapasową i ponownie zaimportować po całkowitym wyczyszczeniu bazy danych.
davidalger

1
@davidalger celem tych modułów jest zachowanie ustawień konfiguracji i / lub zawartości CMS, abyś nie musiał ich ponownie importować. tzn. możesz dodać strony CMS do swoich skryptów danych, aby były one automatycznie wstawiane ponownie po wyczyszczeniu bazy danych.
Erfan

7

Jeśli w ogóle nic nie potrzebujesz - po prostu opróżnij całą bazę danych i wykonaj czystą ponowną instalację.

Uruchamianie obcinania masy zawsze martwi mnie potencjalnymi trwałymi skutkami zerwania kluczowych relacji.

Szybkie czyszczenie DB

Korzystanie z tego skryptu ,

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

Spowoduje to całkowite opróżnienie i usunięcie każdej tabeli w bazie danych. Nie używaj go, jeśli chcesz coś zachować .


Większość z nich jest naprawdę szkicowa. Począwszy od wyłączenia zależności klucza obcego. Czy relacyjna baza danych nie ma usuwać wszystkiego automatycznie, jeśli na przykład usuwasz kluczowy produkt, kluczowe zamówienie sprzedaży itp., Podczas gdy zależności klucza obcego są aktywne, ponieważ wszystkie rekordy we wszystkich tabelach, do których istnieją odniesienia, są usuwane z elementem najwyższego poziomu? Co jeśli pominiesz nazwę tabeli na tej liście obcinania, robiąc to przy wyłączonych relacjach klucza obcego? Witryna MagentoCommerce jest olśniewająca dzięki komunikatom o błędach nieparzystych, które pojawiają się po tych masowych wyczyszczeniach.
Fiasco Labs

Cóż, patrząc na jego scenariusz, rzeczywiście upuści każdy stół. Jeśli chodzi o wyłączenie sprawdzania klucza obcego, potrzebujesz tego, abyś nie musiał ustalać właściwej kolejności, aby usunąć wszystkie tabele.
Lee Saferite

@LeeSaferite - myślę, że FiascoLabs odnosiło się do innych rozwiązań oferujących rozwiązania tylko obcięte w porównaniu z całkowitym zatarciem, które zasugerowałem.
Ben Lessani - Sonassi

Dokładnie o co mi chodziło!
Fiasco Labs

7

Przed uruchomieniem nowej strony Magento eCommerce, na etapie programowania, zawsze będziesz musiał przeprowadzić testy, a to będzie wymagało utworzenia zamówień testowych i klientów, aby upewnić się, że wszystkie procesy działają poprawnie i zgodnie z oczekiwaniami.

Często może to spowodować pozostawienie w systemie danych testowych, których nie będziesz potrzebować po uruchomieniu witryny. Magento jest znane z wstawiania danych do wielu tabel bazy danych, dlatego udostępniliśmy poniższy skrypt SQL, który wyczyści wszystkie te dane z bazy danych Magento (i zresetuje liczniki przyrostu sprzedaży, faktur, klientów i wysyłki). Zostało to przetestowane i potwierdzone podczas pracy z wersjami Magento od 1.4.0.1 do 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

Jeśli pracujesz z EE, powinieneś także obciąć tabele przepisywania URL-a dla przedsiębiorstw, ponieważ nie mają one ograniczeń klucza obcego i podczas importowania danych (ale nie jawnie ustawiających adresy URL) adresy URL starych produktów zostaną połączone z nowo zaimportowanymi produkty.

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

Jedna rzecz, o której nikt nie wspominał, to czyszczenie tabel podatkowych. Jeśli tego nie zrobisz, otrzymasz powtarzające się wpisy identyfikatora zamówienia w tabeli podatków (po ponownym złożeniu zamówienia przy początkowym identyfikatorze zamówienia pojawi się ten sam identyfikator wielokrotnie). Wiele pozycji pojawi się na fakturach / notatkach jako wiele pozycji, zarówno po stronie administratora, jak i klienta. Po przetestowaniu / rozliczeniu metodami opisanymi w powyższych postach (i nie wyczyszczeniu tabel podatkowych) po pewnym czasie miałem 10 różnych pozycji podatkowych wyświetlanych dla pojedynczego zamówienia.

Uwaga - podatek był / jest nadal naliczany poprawnie, ale na notatkach i fakturach pokazywał wszystkie elementy. Bardzo mylące, jeśli klient to widział.

Aby dodać do powyższego:

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; 

I na wszelki wypadek:

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

2

Powinieneś mieć oddzielną bazę danych dla testów. Zobacz środowisko testowe magento. Wszystkie pomysły na usunięcie bazy danych po testach są błędne.


2

Konfiguruję repozytorium do obsługi prostych skryptów SQL do uruchomienia przed uruchomieniem nowej strony Magento. Jak dotąd mogą pomóc:

  1. puste dane testowe od Maga; zamówienia, klienci, raporty, logi itp.
  2. puste dane testowe z różnych rozszerzeń
  3. ustaw żądane identyfikatory dla następnego zamówienia, faktury, wysyłki i kart kredytowych

https://github.com/ccondrup/mage-reset
Pomóż je ulepszyć!


Te skrypty są świetne, jednak czy istnieje wersja MySQL, z którą mają one działać? Próbowałem na serwerze z niższą wersją MySQL niż na moim dev-boxie i dostałem to: ERROR 1064 (42000) w linii 160: Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL, czy używasz właściwej składni w pobliżu „DELIMITER || DROP PROCEDURE JEŚLI ISTNIEJE ccdata_empty_testdata|| To może być ja, ale poza tym świetny scenariusz !!!
Henry's Cat,

@ Henry'sCat Thanks - Wydaje mi się, że jeśli używasz bardzo starej wersji MySQL, może nie obsługiwać polecenia DELIMITER. Nie mogłem znaleźć wersji MySQL, w której został wprowadzony. Wypróbuj w MySQL CLI, jeśli tam działa, być może jest to kwestia zakończenia linii w skrypcie.
ccondrup

2

Tylko moje 2 centy ...

Zamiast zastanawiać się, co usunąć, i zdając sobie sprawę z tego, co później przegapiłem, uruchamiam kilka maszyn wirtualnych i używam migawek na różnych etapach, a także mam dwie osobne witryny - jedną na żywo i jedną testową.

Łatwo jest wtedy mieć skrypt do „przywracania” testu z życia, kiedy go potrzebuję. Ponadto, jeśli klient ma dostęp do systemu testowego, może się nim pobawić przed zrobieniem czegokolwiek na żywo - nie trzeba przywracać danych z kopii zapasowej i tracić zamówień ani innych zmian w tym procesie ( choć testuje ona strategię tworzenia kopii zapasowych. . )

Myślę, że jest to znacznie lepszy i „bezpieczniejszy” proces niż uruchamianie niestandardowego (nieaktualnego?) Skryptu w celu usunięcia (za dużo?) Rzeczy ...

(Prosimy również o głosowanie, ponieważ nie mogę jeszcze komentować!)


1

MYSQL Upuść i utwórz bazę danych, a następnie dodaj uprawnienia użytkownika i administratora administratora magento.

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

Dodaj administratora 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

Na podstawie odpowiedzi Mufaddal przygotowałem zapytanie w celu wyczyszczenia zamówienia i powiązanych danych w 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

Wystarczy pobrać bazę danych phpMyadmin, a następnie otworzyć tabelę, sales_flat_ordera następnie po prostu usunąć dane z tej tabeli, a zamówienia testowe zostaną usunięte. Nie potrzebujesz żadnego kodu, poleceń ani rozszerzeń. chłodny.


0

To późna odpowiedź, ale może być pomocna.

Zajmuję się tworzeniem strony internetowej e-commerce opartej na Magento 1.7 i mam tendencję do TDD.

Myślę, że nie powinniśmy zawracać sobie głowy ręcznym czyszczeniem bazy danych, podczas gdy możemy korzystać z Magento beginTransactioni rollbackmetod.

Oto przykład

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

Ta odpowiedź jest inspirowana odpowiedzią Magento , odwiedź ją w celu dalszego czytania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.