Shopware 6 – Datenbank bereinigen via SQL, Rechnungen und Bestellungen löschen
Hi All,
nach der Einrichtung eines neuen Shopware 6 Webshops wollte ich alle Testdaten wie Bestellungen, Lieferscheine, Rechnungen und Kunden löschen. Um die Funktionalität des Shops zu testen, bedarf es Testkäufe. Leider bietet Shopware keine Möglichkeit das aktuelle Design zu behalten und trotzdem nach der Testphase mit einem sauberen System zu starten.
In solchen Fällen kann die direkte Bearbeitung der Datenbank durch SQL-Abfragen erforderlich sein. Hier gibt es nun die Anleitung, wie Ihr mit einem SQL Editor die Tabellen in der Datenbank leeren könnt.
WICHTIG! –> Alle Einträge sind über Foreign Keys miteinander verbunden und daher ist es nicht möglich einfach die Bestellungen zu löschen
Eine mögliche Lösung besteht darin, vorübergehend die Fremdschlüsselüberprüfung in der Datenbank zu deaktivieren, um das Löschen zu ermöglichen, und sie dann wieder zu aktivieren, um die Datenintegrität zu gewährleisten.
Solltet Ihr damit also einmal Probleme haben, hilft dieser Befehl:
SET FOREIGN_KEY_CHECKS = 0;
Im Anschluss nicht vergessen den Check wieder einzuschalten:
SET FOREIGN_KEY_CHECKS = 1;
In unserem Beispiel ist das aber nicht notwendig…
Bevor du jedoch mit diesen Schritten fortfährst, solltest du sicherstellen, dass du die erforderlichen Berechtigungen hast und ein Backup deiner Datenbank erstellt hast, um unerwünschte Datenverluste zu vermeiden.
Um die Tabellen in der Datenbank zu leeren, kannst du beispielsweise den SQL-Editor in phpMyAdmin verwenden.
Verbindet Euch via pypMyAdmin und klickt auf die Tabelle document
Jetzt seht Ihr alle generierten Dokumente – Bestellungen, Lieferscheine und Rechnungen, wobei jeder Eintrag für ein einzelnes Dokument steht:
Wenn ihr alles löschen wollt, wählt einfach „Alles auswählen“ und klickt auf löschen:
Somit ist die Tabelle komplett leer und wir können mit dem Löschen der Bestellungen fortfahren.
Hierzu öffnet order
Auch hier werden alle Einträge markiert und gelöscht!
WICHTIG! –> Um das gewünschte Ergebnis im Shop zu sehen müsst Ihr den Cache löschen und die Seite erneut laden.
Viel Erfolg beim Bereinigen deines Shopware 6 Webshops und beim Testen seiner Funktionalitäten! =)
Greetings
Franky
Hier findet sich u.a. eine Anleitung mit Script zum löschen der Bestellungen.
https://docs.shopware.com/de/shopware-6-de/tutorials-und-faq/sql-tipps-tricks
Anschließend noch die Nummern passend setzen in der Tabelle number_range_state (phpMyAdmin)
Auch ich suche schon lange eine Möglichkeit, alle Daten (auch Kunden) in der DB zu löschen. Deine Anleitung führte bei mir jedoch nicht zum Erfolg. Ich habe in eine leere Shopware 6 Installation eine Migration von Shopware 5 durchgeführt und möchte nun alle Daten nomals löschen. In der Tabelle „Document“ habe ich deshalb keinerlei Daten, in der order allerdings schon. Möchte ich die Tabelle „order“ löschen, erhalte ich jedoch folgende Fehlermeldung:
#1701 – Cannot truncate a table referenced in a foreign key constraint (’sw6′.’document‘, CONSTRAINT ‚fk.document.order_id‘ FOREIGN KEY (‚order_id‘, ‚order_version_id‘) REFERENCES ‚ch77807_sw6′.’order‘ (id‘, ‚version_id‘))
SET FOREIGN_KEY_CHECKS = 0; habe ich in der SQL erfolgreich ausgeführt, kann jedoch auch danach die Order-Daten nicht löschen. Was mache ich falsch?
LG
Hi Patrik,
kannst Du bitte nochmal verifizieren, dass der Foreign Check tatsächlich abgeschaltet wurde?
Hierfür bitte folgendes:
SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;
Merci
Franky
Hi Franky,
vielen Dank für die Infos.
Es geht noch schneller per SQL Query:
DELETE FROM customer;
und/oder
DELETE FROM order;
Somit werden alle Einträge der Tabelle mit einem Befehl gelöscht.
Gruß Zladdy
Super, vielen Dank.
Werde ich gleich ausprobieren.
Danke für deinen Artikel, wo kann ich den Befehl für den key eingeben?
Hi Daniele,
das kannst Du in der SQL Query tun:
Anschließend musst Du unten Rechts auf „GO“ klicken.
Have fun
Franky =)