Magento nach dem Testen löschen

75

Momentan mache ich viele Tests in Magento, damit ich mich damit vertraut machen kann. Leider ist die Datenbank bei meinen Tests extrem überladen. Ich möchte die Datenbank leeren, damit ich von vorne anfangen kann. Dies bedeutet Folgendes:

  • Alle Produkte löschen
  • Alle Attribute löschen
  • Alle Attributmengen löschen
  • Alle Kategorien löschen
  • Löschen aller Bestellungen, Sendungen, Transaktionen usw.

Ich habe in den Magento-Foren einen Beitrag zum Löschen der Produkte gefunden, nämlich den folgenden SQL-Code:

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;

Ich würde dasselbe für die anderen erwähnten brauchen. Leider weiß ich nicht, welche Tabellen die verschiedenen Daten enthalten, sonst hätte ich es selbst gemacht. Ich möchte auch nicht versehentlich die falschen Tische abräumen. Ich hoffe ihr könnt mir helfen!

Tiefgefroren
quelle
Welche Daten aus Ihrer Testdatenbank benötigen Sie noch? Haben Sie darüber nachgedacht, diese Daten (zum Beispiel Ihre Konfiguration core_config_data) zu exportieren und einfach von vorne zu beginnen?
Alex
1
Schauen Sie sich auch github.com/netz98/n98-magerun#stripped-database-dump an. Auf diese Weise können Sie die Datenbank ohne Bestellungen usw. exportieren und anschließend erneut importieren.
Alex
@Alex Ich bin mir nicht sicher, was ich aufbewahren soll, da ich das von einer dritten Partei bekommen habe, die die Basis des Shops gemacht hat. Ich muss weiter daran arbeiten, bin mir aber nicht ganz sicher, was ich einfach wegwerfen kann und was nicht. Außerdem schaue ich mir den von Ihnen angegebenen Link an.
Tiefgefroren
Ich habe aus Versehen einfach alle Attribute gelöscht. Einschließlich der Magento System-Attribute. Ich kann jetzt keine Produkte erstellen. Gibt es eine Möglichkeit, nur die Standardattribute des Magento-Kernsystems wiederherzustellen?
Jelly_Doughnut
@ Jelly_Doughnut Ich würde vorschlagen, eine separate Frage zu stellen
Kristof bei Fooman

Antworten:

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;

Für Bestellungen

    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;

Mit dieser Funktion können Sie Attributmengen löschen.

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

Suchen Sie nach dieser Tabelle, um das Attribut zu entfernen

catalog_eav_attribute
eav_attribute
eav_attribute_set

Überprüfen Sie die eav_attributeSpalte, is_user_defineddamit Sie sich ein Bild machen können.

Mufaddal
quelle
Genau das suche ich! Haben Sie es auch für die Attribute und Attributmengen?
Tiefgefroren
Nein, ich habe keine SQL für Attribute und Attributmengen, Sie können Ihre Attribute und Attributmengen manuell löschen, wenn es nicht viel Eintrag gibt
Mufaddal
Leider gibt es viele von ihnen. Trotzdem, danke dafür, es wird sicherlich helfen! Ich denke, ich muss sie nur für die Attribute selbst finden.
Tiefgefroren
@Rune Ok, überprüfe meine aktualisierte Antwort
Mufaddal
2
Hinweis zu Enterprise, den Sie auch kürzen müssen: enterprise_customer_sales_flat_order enterprise_customer_sales_flat_order_address enterprise_sales_order_grid_archive
Tegan Snyder
19

Sie können einfach die gesamte Datenbank leeren und Magento führt alle Installations- / Upgrade- / Datenskripte beim nächsten Laden erneut aus. Dies setzt Magento auf die Werkseinstellungen zurück und zerstört alle Ihre Änderungen.

Es ist eine gute Angewohnheit, ein Modul zu erstellen, das alle grundlegenden Speichereinstellungen in install / upgrade / data-Skripten enthält. Dies hat den Vorteil, dass diese Einstellungen in der Versionskontrolle gespeichert werden und alle verschiedenen Websites, die Sie für das Geschäft haben (Produktion, Staging, Benutzerakzeptanztests usw.), auf dem neuesten Stand gehalten werden.

Wenn auf einer Site mehrere Personen arbeiten, erstellen wir sogar für jede Einstellungsgruppe ein neues Modul, damit beim Zusammenführen von Code keine Konflikte zwischen den Versionen auftreten.

In Ihrem Fall würde ich ein Modul erstellen, das alle Einstellungen erstellt, die Sie beibehalten möchten. Wenn Sie die Datenbank löschen, wird Magento vollständig bereinigt und enthält die gewünschten Einstellungen!

Sie können sich die Installations- / Upgrade-Skripte von Magento ansehen, um zu sehen, wie Magento die anfänglichen Daten / Einstellungen installiert.

Erfan
quelle
3
Dies ist eine gute Idee, es gibt nur ein Problem: Wenn Sie Erweiterungen installiert haben, kann es vorkommen, dass das Problem auftritt, dass diese nicht auf diese Weise getestet werden, sodass sie Fehler auslösen, da die Installationsskripte der Module vor bestimmten anderen Modulen und ausgeführt werden Abhängigkeiten sind nicht erfüllt. Aber ich mag diese Methode auch.
Fabian Blechschmidt
Kannst du das erklären? Wenn Sie eine Einstellung basierend auf einem Drittanbieter-Modul in Ihr eigenes Modul einfügen, deklarieren Sie einfach das Drittanbieter-Modul als eine Abhängigkeit (in Ihrer App / etc / module.xml) und Ihre Module werden nach dem dritten installiert / upgradescripts ausgeführt -Partei Module '.
Erfan
1
Ja, aber wenn das Modul eines Drittanbieters dies nicht tut oder Daten anstelle von Datenskripten in die Installation einfügt, können aufgrund der Reihenfolge Probleme auftreten. In den meisten Fällen gehen die Entwickler davon aus, dass Magento bereits installiert ist ;-)
Fabian Blechschmidt
1
Ein weiteres potenzielles Problem besteht darin, dass Sie möglicherweise Konfigurationseinstellungen und / oder CMS-Inhalte beibehalten möchten. Das müsste also nach dem vollständigen Löschen der Datenbank gesichert und erneut importiert werden.
Davidalger
1
@davidalger Der Sinn dieser Setup-Module besteht darin, die Konfigurationseinstellungen und / oder CMS-Inhalte beizubehalten, damit Sie sie nicht erneut importieren müssen. dh Sie können CMS-Seiten zu Ihren Datenskripten hinzufügen, damit diese nach dem Löschen der Datenbank automatisch wieder eingefügt werden.
Erfan
7

Wenn Sie überhaupt nichts benötigen, leeren Sie einfach die gesamte Datenbank und führen Sie eine Neuinstallation durch.

Das Ausführen von Massenkürzungen beunruhigt mich immer über mögliche dauerhafte Auswirkungen unterbrochener Schlüsselbeziehungen.

Schnelle DB-Spülung

Mit diesem Skript ,

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

Dadurch wird jede einzelne Tabelle in der Datenbank vollständig entleert und entfernt. Verwenden Sie es nicht, wenn Sie etwas aufbewahren müssen .

Ben Lessani - Sonassi
quelle
Die meisten davon werden wirklich lückenhaft. Beginnen Sie mit dem Ausschalten der Fremdschlüssel-Abhängigkeiten. Soll eine relationale Datenbank nicht alles automatisch löschen, wenn Sie beispielsweise das Schlüsselprodukt, den Schlüsselauftrag usw. löschen, während Fremdschlüsselabhängigkeiten aktiv sind, da alle Datensätze in allen referenzierten Tabellen mit dem Element der obersten Ebene gelöscht werden? Was ist, wenn Sie einen Tabellennamen in dieser Kürzungsliste verpassen, wenn die Fremdschlüsselbeziehungen deaktiviert sind? Die MagentoCommerce-Site ist voller seltsamer Fehlermeldungen, die nach diesen Massenlöschvorgängen angezeigt werden.
Fiasko Labs
Nun, wenn man sein Drehbuch betrachtet, wird es tatsächlich jeden Tisch fallen lassen. Zum Deaktivieren von Fremdschlüsselprüfungen ist dies erforderlich, damit Sie nicht die richtige Reihenfolge ermitteln müssen, um alle Tabellen zu löschen.
Lee Saferite
@LeeSaferite - Ich denke, dass sich FiascoLabs auf die anderen Lösungen bezog, die Lösungen anbieten, die nur abgeschnitten werden können, im Vergleich zu der von mir vorgeschlagenen völligen Vernichtung.
Ben Lessani - Sonassi
Genau das habe ich gemeint!
Fiasko Labs
7

Bevor Sie eine neue Magento eCommerce-Website starten, müssen Sie in der Entwicklungsphase immer Tests durchführen. Dazu müssen Sie Testaufträge und Kunden erstellen, um sicherzustellen, dass alle Prozesse ordnungsgemäß und wie erwartet funktionieren.

Dies kann häufig dazu führen, dass eine Menge Testdaten im System verbleiben, die Sie nach dem Start der Site nicht mehr benötigen. Magento ist dafür berüchtigt, Daten in mehrere Datenbanktabellen einzufügen. Daher haben wir das folgende SQL-Skript bereitgestellt, mit dem alle diese Daten sauber aus Ihrer Magento-Datenbank gelöscht werden (und die Inkrementzähler für Verkäufe, Rechnungen, Kunden und Versand zurückgesetzt werden). Dies wurde getestet und für Magento-Versionen von 1.4.0.1 bis 1.9.0.1 bestätigt.

#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;
Ostende
quelle
5

Wenn Sie mit EE arbeiten, sollten Sie auch die Umschreibtabellen für Unternehmens-URLs kürzen, da für sie keine Fremdschlüsselbeschränkungen gelten. Wenn Sie Daten importieren (aber keine expliziten URLs festlegen), werden die URLs der alten Produkte mit Ihren neuen importierten verknüpft Produkte.

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;
Tobias
quelle
4

Eine Sache, die niemand erwähnt hat, ist das Löschen von Steuertabellen. Wenn Sie dies nicht tun, werden in der Steuertabelle Nachbestellungs-ID-Einträge angezeigt (wenn Sie erneut Bestellungen bei der Startbestellungs-ID aufgeben, wird dieselbe ID mehrmals angezeigt). Die mehreren Elemente werden auf Rechnungen / Memos sowohl auf der Administrator- als auch auf der Clientseite als mehrere Werbebuchungen angezeigt. Nach dem Testen / Löschen mit den Methoden in den obigen Beiträgen (und nicht dem Löschen der Steuertabellen) wurden nach einer Weile 10 verschiedene Steuerposten für eine einzelne Bestellung angezeigt.

Hinweis - Die Steuer wurde / wird immer noch korrekt berechnet, aber auf Memos und Rechnungen wurden alle Artikel angezeigt. Sehr verwirrend, wenn ein Kunde das sehen sollte.

Fügen Sie also Folgendes hinzu:

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; 

Und für ein gutes Maß:

TRUNCATE `sales_payment_transaction`;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1; 
user4855
quelle
2

Sie sollten eine separate Datenbank für Tests haben. Siehe Magento Test Framework. Alle Ideen zum Löschen der Datenbank nach den Tests sind falsch.

Dmytro Zavalkin
quelle
2

Ich richte ein Repository ein, um einfache SQL-Skripte zu verwalten, die ausgeführt werden sollen, bevor eine neue Magento-Site gestartet wird. Bisher können sie helfen:

  1. leere Testdaten von Mage; Bestellungen, Kunden, Berichte, Protokolle usw.
  2. leere Testdaten aus verschiedenen Erweiterungen
  3. gewünschte IDs für nächste Bestellung, Rechnung, Versand und Gutschrift einstellen

https://github.com/ccondrup/mage-reset
Helfen Sie, sie zu verbessern!

ccondrup
quelle
Diese Skripte sind großartig. Gibt es jedoch eine MySQL-Version, mit der sie ausgeführt werden sollen? Ich habe es auf einem Server mit einer niedrigeren MySQL-Version als auf meiner Dev-Box versucht und Folgendes erhalten: FEHLER 1064 (42000) in Zeile 160: Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von 'DELIMITER || DROP PROCEDURE IF EXISTS ccdata_empty_testdata|| Das mag ich sein, aber ansonsten tolles Drehbuch !!!
Henrys Katze
@ Henry'sCat Danke - Ich denke, wenn Sie eine sehr alte Version von MySQL verwenden, wird der Befehl DELIMITER möglicherweise nicht unterstützt. Ich konnte nicht finden, in welcher MySQL-Version es eingeführt wurde. Versuchen Sie es in MySQL CLI. Wenn es dort funktioniert, ist es möglicherweise nur eine Frage der Zeilenenden im Skript.
ccondrup
2

Nur meine 2 Cent ...

Anstatt herauszufinden, was gelöscht werden soll, und erst zu erkennen, was ich später verpasst habe, führe ich einige VMs aus und verwende Snapshots in verschiedenen Phasen. Außerdem habe ich zwei separate Sites - eine Live- und eine Test-Site.

Es ist dann einfach, ein Skript zu haben, um den Test aus dem Leben wiederherzustellen, wenn ich es brauche. Wenn der Kunde Zugriff auf das Testsystem hat, kann er auch damit spielen, bevor er Live-Aktionen ausführt. Eine Wiederherstellung nach einem Backup sowie der Verlust von Aufträgen und anderen Änderungen im Prozess sind nicht erforderlich (dies testet jedoch Ihre Backup-Strategie.). . )

Ich denke, dies ist ein viel besserer und "sichererer" Prozess, als ein benutzerdefiniertes (veraltetes?) Skript auszuführen, um (zu viel?) Zeug zu löschen ...

(Bitte stimmen Sie dies auch ab, da ich noch keinen Kommentar abgeben kann!)

KolonUK
quelle
1

MYSQL Löschen und erstellen Sie die Datenbank und fügen Sie dann die Benutzerrechte und den Magento-Administrator hinzu.

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

Magento-Administrator hinzufügen:

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 protected]','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;
Garistar
quelle
1

Basierend auf einer Antwort von Mufaddal habe ich eine Abfrage vorbereitet, um die Bestellung und die zugehörigen Daten in Magento 2.2 zu löschen

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;
Stanislav Potapenko
quelle
0

Holen Sie sich einfach Ihre Datenbank phpMyadmin und öffnen Sie die Tabelle sales_flat_orderund entfernen Sie dann einfach die Daten von dieser Tabelle und Ihre Testaufträge werden gelöscht. Kein Bedarf an Code, Befehlen oder Erweiterungen. cool.

Asif Mehmood
quelle
0

Dies ist eine späte Antwort, aber es könnte hilfreich sein.

Ich entwickle eine E-Commerce-Website basierend auf Magento 1.7 und tendiere zu TDD.

Ich denke, wir sollten uns nicht die Mühe machen, die Datenbank manuell zu bereinigen, während wir Magento beginTransactionund rollbackMethoden verwenden können.

Hier ist ein Beispiel

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

Diese Antwort ist von dieser Magento-Antwort inspiriert. Besuchen Sie sie, um weitere Informationen zu erhalten.

Mohamed Abdul-Fattah
quelle