Shopware 6 SQL-Leitfaden
Im Folgenden erfahren Sie, wie Sie Ihre Shopware-Daten mit Hilfe von SQL verwalten können. Wir beschreiben, welche SQL-Abfragen Sie verwenden können, um Produkte, Eigenschaften, Kundendaten und Bestellungen in Shopware 6 zu löschen. Außerdem erfahren Sie, wie Sie Erweiterungen deaktivieren, die Datenbanksortierung anpassen und die Standard-Kundengruppe in Shopware 6 mithilfe von SQL wiederherstellen können. Zusätzlich zu dieser Shopware 6 SQL-Anleitung finden Sie weitere Shopware 6-Tutorials in unserem Kochbuch.
Beachten Sie, dass wir Shopware-Integration mit externen Plattformen anbieten. Kontaktieren Sie unseren Support für weitere Informationen oder testen Sie unsere verbesserten Import-, Export- und Massenaktionen.
Table of contents
Shopware 6 SQL Warnung!
Der folgende Artikel richtet sich an erfahrene Entwickler. Es wird dringend empfohlen, die in diesem Shopware 6 SQL-Tutorial beschriebenen Taktiken nur mit dem nötigen Fachwissen und auf eigenes Risiko zu befolgen. Bevor Sie weitermachen, sollten Sie eine Sicherungskopie Ihrer Shopware 6-Website erstellen, um zu verhindern, dass Sie sie nicht wiederherstellen können, falls etwas schief geht oder Sie mit den Ergebnissen unzufrieden sind. Beachten Sie, dass die nachstehenden Abfragen möglicherweise veraltet sind, wenn Sie dieses Material lesen. Beachten Sie auch, dass alle hier beschriebenen SQL-Manipulationen nicht offiziell unterstützt werden, obwohl Sie eine ähnliche Anleitung in der offiziellen Dokumentation finden können.
Shopware 6 SQL Definiert
SQL (Structured Query Language) ist eine standardisierte Programmiersprache, die für die Verwaltung relationaler Datenbanken verwendet wird. SQL-Datenbanken in relationalen Systemen bestehen aus mehreren Tabellen, die Daten in Zeilen und Spalten enthalten. Und genau so behandelt Shopware 6 seine Daten. Sie haben also die Möglichkeit, verschiedene SQL-Abfragen zu verwenden, um die in der Datenbank Ihrer Website gespeicherten Informationen zu verwalten. Was sind nun die häufigsten Datenmanipulationen?
Shopware 6 SQL-Datenbankverwaltung
Im Folgenden stellen wir zwei Abschnitte von SQL-Abfragen zur Verfügung: Katalog und System. Der erste Abschnitt enthält SQL-Abfragen zum Löschen von Katalogdaten in Shopware 6. Der zweite Abschnitt veranschaulicht verschiedene Systemmanipulationen, die Sie über SQL auf Ihre Shopware 6 Website anwenden können.
Katalog
So löschen Sie Produkte über SQL in Shopware 6
Verwenden Sie die folgende SQL-Abfrage, um alle angelegten Produkte in Shopware 6 zu löschen. Sie löscht die Produktübersicht vollständig.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
delete pv.*, pt2.*, pt.*, psk.*, pr.*, pp2.*, pp.*, po.*, pm.*, pcfs.*, pcst.*, pcsap.*, pcs2.*, pcs.*, pct.*, pc.*, p.* from product p left join product_category pc on p.id = pc.product_id left join product_category_tree pct on p.id = pct.product_id left join product_configurator_setting pcs on p.id = pcs.product_id left join product_cross_selling pcs2 on p.id = pcs2.product_id left join product_cross_selling_assigned_products pcsap on p.id = pcsap.product_id left join product_cross_selling_translation pcst on pcs2.id = pcst.product_cross_selling_id left join product_custom_field_set pcfs on p.id = pcfs.product_id left join product_media pm on p.id = pm.product_id left join product_option po on p.id = po.product_id left join product_price pp on p.id = pp.product_id left join product_property pp2 on p.id = pp2.product_id left join product_review pr on p.id = pr.product_id left join product_search_keyword psk on p.id = psk.product_id left join product_tag pt on p.id = pt.product_id left join product_translation pt2 on p.id = pt2.product_id left join product_visibility pv on p.id = pv.product_id; |
So löschen Sie Eigenschaften über SQL in Shopware 6
Da Eigenschaften in Shopware 6 unabhängig von Produkten existieren, benötigen Sie eine separate Abfrage, um sie zu löschen. Verwenden Sie dazu die folgende SQL-Manipulation:
1 2 3 4 |
delete pgt.*, pgot.*, pgo.*, pg.* from property_group pg join property_group_option pgo on pg.id = pgo.property_group_id join property_group_option_translation pgot on pgo.id = pgot.property_group_option_id join property_group_translation pgt on pg.id = pgt.property_group_id; |
So löschen Sie Kundendaten per SQL in Shopware 6
Verwenden Sie die folgende SQL-Abfrage, um alle Kunden in Shopware 6 zu löschen. Wenden Sie diese Abfrage niemals auf Ihren Live-Shop an, da Sie sonst wichtige Daten im Zusammenhang mit E-Commerce-Aktivitäten verlieren.
1 2 3 4 5 6 |
delete cwp.*, cw.*, ct.*, cr.*, ca.*, c.* from customer c left join customer_address ca on c.id = ca.customer_id left join customer_recovery cr on c.id = cr.customer_id left join customer_tag ct ON c.id = ct.customer_id left join customer_wishlist cw on c.id = cw.customer_id left join customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id; |
System
Deaktivieren von nicht standardmäßigen Erweiterungen über SQL in Shopware 6
Verwenden Sie die folgende SQL-Abfrage, um Erweiterungen zu deaktivieren, die nicht Teil der Standard-Shopware-Installation sind. Diese Technik ist besonders nützlich bei der Fehlersuche, da Sie die Abfrage anwenden und die Auswirkungen der Erweiterungen auf Null reduzieren.
Beachten Sie auch, dass die Verwendung dieser SQL-Abfrage mit einem über ein Plugin integrierten Thema zu Problemen führen kann, wenn das Thema einem Vertriebskanal zugewiesen ist. Das Aufrufen der entsprechenden Vertriebskanäle wird problematisch sein. Stellen Sie daher sicher, dass Ihr Thema keinem Vertriebskanal zugeordnet ist.
Sie deaktivieren nicht standardisierte Erweiterungen über SQL in Shopware 6 wie folgt. Legen Sie eine temporäre Sicherungstabelle an, um den aktuellen Stand der Erweiterungen zu speichern:
1 2 |
CREATE TABLE plugin_tmp LIKE plugin; INSERT INTO `plugin_tmp` SELECT * FROM `plugin`; |
Deaktivieren Sie die Erweiterungen:
1 |
UPDATE `plugin` SET `active`= 0 WHERE (author <> 'shopware AG' AND author <> 'Shopware') OR (author IS NULL); |
Sie können den ursprünglichen Zustand der Erweiterungen mit einer anderen SQL-Abfrage wiederherstellen:
1 |
UPDATE plugin AS p JOIN plugin_tmp AS pt ON p.id = pt.id SET p.active = pt.active; |
Danach löschen Sie die temporäre Sicherungstabelle mit dieser SQL-Abfrage:
1 |
DROP TABLE plugin_tmp; |
Wie aktualisiert man die Datenbank-Kollation über SQL in Shopware 6?
Showpare verwendet “utf8mb4_unicode_ci” als Standard-Kollation für Tabellen. Wenn die Sortierung für einzelne Tabellen nicht korrekt eingestellt ist, können Sie eine SQL-Abfrage verwenden, um sie zu aktualisieren.
Mit dieser Technik können Sie Fehler vermeiden, die durch den Vergleich von Zeichenketten mit inkompatiblen Sortierungen oder durch die Auswahl von Daten aus Spalten mit unterschiedlichen Sortierungen verursacht werden.
In den Protokolldateien hilft Ihnen der folgende Eintrag, das Problem zu erkennen:
1 |
SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) |
Verwenden Sie die folgende SQL-Abfrage, um zu prüfen, ob eine falsche Sortierung in einer Shopware-Tabelle verwendet wird. Fügen Sie den Tabellen- und Datenbanknamen an den markierten Stellen ein (Tabellenname & Datenbankname).
1 2 3 4 5 6 |
SELECT table_schema, table_name, column_name, character_set_name, collation_name FROM information_schema.columns WHERE (collation_name = 'utf8mb4_unicode_ci' or collation_name = 'utf8_general_ci ') and table_name = '' --TableName and table_schema = '' --DatabaseName ORDER BY table_schema, table_name,ordinal_position; |
Erstellen Sie eine vollständige Sicherung, bevor Sie Änderungen an der Datenbank vornehmen. Aktualisieren Sie anschließend die Sortierung. Verwenden Sie diese SQL-Abfrage, um die gesamte Shopware 6-Datenbank zu aktualisieren:
1 |
ALTER DATABASE --DatabaseName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
Wenn Sie eine einzelne Tabelle in Ihrer Shopware 6-Datenbank aktualisieren möchten, steht Ihnen die folgende Abfrage zur Verfügung
1 |
ALTER TABLE --TableName CONVERT TO CHARACTER SET utf8mb4 COLLATE 'utf8mb4_unicode_ci'; |
Wiederherstellung der Standard-Kundengruppe über SQL in Shopware 6
Die folgende SQL-Abfrage stellt die Standard-Kundengruppe in Shopware 6 wieder her. Beachten Sie, dass Sie die entsprechenden Übersetzungen manuell in der Verwaltung pflegen müssen.
1 2 |
INSERT INTO `customer_group` (`id`, `display_gross`, `registration_active`, `created_at`, `updated_at`) VALUES (UNHEX('CFBD5018D38D41D8ADCA10D94FC8BDD6'), 1, 0, '2021-01-01 00:00:00.00', NULL); |