SQL Tipps & Tricks

Es wird empfohlen diese Statements nur mit den nötigen Vorkenntnissen auszuführen.
Die hier zur Verfügung gestellten Informationen wurden zum Zeitpunkt der Veröffentlichung dieses Artikels getestet, können sich zwischenzeitlich aber geändert haben. Die Durchführung dieses Tutorials geschieht auf eigene Gefahr! 

Lege Dir vor der Durchführung ein Backup an, sodass Du dieses im Zweifel zurückspielen kannst. Beachte, dass es sich hier um Anpassungen von Shopware handelt und der Inhalt dieses Tutorials daher nicht offiziell supportet wird!

Kataloge

Alle Produkte löschen

Mit dem folgenden Query kannst Du alle angelegten Produkte löschen und die Produkt Übersicht somit komplett leeren. 


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;

Alle Eigenschaften löschen

Mit dem folgenden Query kannst Du alle Eigenschaften entfernen. 


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;

System / Einstellungen

Nicht standardmäßig vorhandene Plugins deaktivieren

Mit den folgenden Queries kannst Du die Plugins, die nicht bereits bei der Installation von Shopware vorhanden sind, deaktivieren. Dies ist besonders für das Debuggen von Fehlern sehr hilfreich, da Du so schnell den Einfluss von Plugins ausschließen kannst.

Wenn Du ein eigenes Theme verwendest, das über ein Plugin eingebunden ist, solltest Du vorab sicherstellen, dass das Theme keinem Verkaufskanal zugewiesen ist. Alternativ kann es zu Problemen beim Aufruf der entsprechenden Verkaufskanälen kommen.

Zunächst legen wir eine temporäre Backup-Tabelle an. In dieser Tabelle wird der aktuelle Stand der Plugins gesichert.


CREATE TABLE plugin_tmp LIKE plugin;
INSERT INTO `plugin_tmp` SELECT * FROM `plugin`;

Anschließend kannst Du die Plugins deaktivieren


UPDATE `plugin` SET `active`= 0 WHERE (author <> 'shopware AG' AND author <> 'Shopware') OR (author IS NULL);

Der ursprüngliche Zustand der Plugins lässt sich später wieder wie folgt herzustellen


UPDATE plugin AS p JOIN plugin_tmp AS pt ON p.id = pt.id SET p.active = pt.active;

Abschließend kannst Du noch die temporäre Sicherungstabelle wieder löschen


DROP TABLE plugin_tmp;

Datenbank-Kollation anpassen

Im Standard verwendet Showpare "utf8mb4_unicode_ci" als Kollation für die Tabellen.
Es kann jedoch vorkommen, dass die Kollation für einzelne Tabellen nicht (mehr) korrekt gesetzt ist.

Hierdurch kann es beim Vergleich von Zeichenfolgen inkompatibler Kollationen oder beim Versuch, Daten aus Spalten mit verschiedenen Kollationen auszuwählen, zu Fehlern kommen.
In den Log-Dateien ist dies an folgendem Eintrag (evtl. leicht abgewandelt) erkennbar:

SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)

Mit folgendem Query kannst Du prüfen, ob in einer Tabelle eine falsche Kollation verwendet wird.
Füge dazu den Tabellen- und Datenbanknamen in das Query an den markierten Stellen ein.


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 = '' --Tabellenname einsetzen 
 and table_schema = '' --Datenbanknamen einsetzen
 ORDER BY table_schema, table_name,ordinal_position;

Das Update der Kollation ist mit einem der beiden folgenden Queries möglich.

Wir empfehlen, vor Änderungen in der Datenbank immer ein vollständiges Backup anzulegen.

 Update der gesamten Datenbank


ALTER DATABASE --Datenbanknamen einsetzen CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

Update einer einzelnen Tabelle


ALTER TABLE --Tabellenname einsetzen CONVERT TO CHARACTER SET utf8mb4 COLLATE 'utf8mb4_unicode_ci';

War dieser Artikel hilfreich?