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!
magento-1.7
database
Tiefgefroren
quelle
quelle
core_config_data
) zu exportieren und einfach von vorne zu beginnen?Antworten:
Für Bestellungen
Mit dieser Funktion können Sie Attributmengen löschen.
Suchen Sie nach dieser Tabelle, um das Attribut zu entfernen
Überprüfen Sie die
eav_attribute
Spalte,is_user_defined
damit Sie sich ein Bild machen können.quelle
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.
quelle
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 ,
Dadurch wird jede einzelne Tabelle in der Datenbank vollständig entleert und entfernt. Verwenden Sie es nicht, wenn Sie etwas aufbewahren müssen .
quelle
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.
quelle
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.
quelle
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:
Und für ein gutes Maß:
quelle
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.
quelle
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:
https://github.com/ccondrup/mage-reset
Helfen Sie, sie zu verbessern!
quelle
ccdata_empty_testdata
|| Das mag ich sein, aber ansonsten tolles Drehbuch !!!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!)
quelle
MYSQL Löschen und erstellen Sie die Datenbank und fügen Sie dann die Benutzerrechte und den Magento-Administrator hinzu.
Magento-Administrator hinzufügen:
quelle
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
quelle
Holen Sie sich einfach Ihre Datenbank phpMyadmin und öffnen Sie die Tabelle
sales_flat_order
und entfernen Sie dann einfach die Daten von dieser Tabelle und Ihre Testaufträge werden gelöscht. Kein Bedarf an Code, Befehlen oder Erweiterungen. cool.quelle
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
beginTransaction
undrollback
Methoden verwenden können.Hier ist ein Beispiel
Diese Antwort ist von dieser Magento-Antwort inspiriert. Besuchen Sie sie, um weitere Informationen zu erhalten.
quelle