Shopware 6 Update: Plugin-Migration blockiert Core-Update
Alte oder inkompatible Plugins sind der häufigste Grund für gescheiterte Shopware 6 Updates. Besonders tückisch: Plugin-Migrationen, die auf nicht mehr existierende Tabellen oder Klassen zugreifen. In diesem Beitrag zeige ich dir, wie du diese Blocker identifizierst und sicher umgehst.
Das Problem
Typische Fehlermeldungen:
Migration error in plugin XYZ:
Base table or view not found: 1146 Table 'shopware.custom_plugin_table' doesn't exist
Oder:
Class 'VendorName\PluginName\Migration\Migration123' not found
Oder:
Call to undefined method ... in plugin migration
Die Core-Migration läuft durch, aber eine registrierte Plugin-Migration blockiert den gesamten Prozess.
Warum passiert das?
Typische Szenarien:
1. Plugin inkompatibel: Das Plugin wurde nie für die neue Shopware-Version aktualisiert
2. Plugin gelöscht, Migration bleibt: Plugin-Dateien wurden entfernt, aber die Migration ist noch in der Datenbank registriert
3. Plugin hat sich selbst zerstört: Eine frühere Migration hat Tabellen gelöscht, eine spätere will sie ändern
4. Abhängigkeiten fehlen: Plugin benötigt andere Plugins oder Bibliotheken, die nicht mehr da sind
Das Kernproblem: Shopware führt alle registrierten Migrationen aus – auch von Plugins, die nicht mehr korrekt funktionieren.
Defekte Plugin-Migrationen identifizieren
Alle Plugin-Migrationen anzeigen:
SELECT class, creation_timestamp, update
FROM migration
WHERE class NOT LIKE 'Shopware%'
ORDER BY creation_timestamp DESC;
Nicht ausgeführte Plugin-Migrationen finden:
SELECT class, creation_timestamp
FROM migration
WHERE class NOT LIKE 'Shopware%'
AND update IS NULL
ORDER BY creation_timestamp;
Migrationen eines bestimmten Plugins:
SELECT *
FROM migration
WHERE class LIKE '%PluginName%';
Lösung 1: Plugin deaktivieren
Wenn das Plugin noch installiert ist:
# Plugin deaktivieren
php bin/console plugin:deactivate PluginName# Optional: Plugin deinstallieren
php bin/console plugin:uninstall PluginName
# Migration erneut starten
php bin/console database:migrate --all
Wichtig: Nach erfolgreichem Update prüfen, ob eine aktualisierte Plugin-Version verfügbar ist.
Lösung 2: Migration als ausgeführt markieren
Wenn das Plugin nicht mehr existiert oder die Migration übersprungen werden soll:
-- Alle offenen Migrationen eines Plugins als ausgeführt markieren
UPDATE migration
SET update = NOW(6),
message = 'Manually skipped - plugin incompatible/removed'
WHERE class LIKE '%PluginName%'
AND update IS NULL;
Einzelne Migration überspringen:
UPDATE migration
SET update = NOW(6),
message = 'Manually skipped - table does not exist'
WHERE class = 'VendorName\\PluginName\\Migration\\Migration1234567890'
AND update IS NULL;
Danach:
php bin/console database:migrate --all
Lösung 3: Migration komplett entfernen
Wenn das Plugin komplett entfernt wurde und nie wieder verwendet wird:
-- Alle Migrationseinträge des Plugins löschen
DELETE FROM migration
WHERE class LIKE '%PluginName%';
Vorsicht: Nur anwenden, wenn du sicher bist, dass das Plugin nicht mehr benötigt wird. Bei einer Neuinstallation würden alle Migrationen erneut laufen.
Sicherer Ansatz: Migrationen als ausgeführt markieren statt löschen.
Prävention: Plugins vor Updates prüfen
Checkliste vor jedem Major-Update:
1. Kompatibilität prüfen: - Plugin-Dokumentation lesen - Shopware Store auf Updates prüfen - Changelog des Plugins checken
2. Nicht benötigte Plugins entfernen:
php bin/console plugin:list
# Ungenutzte Plugins deinstallieren
php bin/console plugin:uninstall UnusedPlugin --clear-database
3. Backup erstellen:
mysqldump -u USER -p shopware > backup_vor_update.sql
4. Staging-Test: - Update zuerst auf Staging-Umgebung testen - Plugin-Kompatibilität verifizieren
Erfahrungswert: Alte Plugins sind der #1 Update-Blocker in der Praxis. Ein sauberer Plugin-Stand spart Stunden beim Update.
Fazit
Plugin-Migrationen, die Core-Updates blockieren, sind ärgerlich aber lösbar:
1. Identifizieren: Welches Plugin verursacht den Fehler? 2. Entscheiden: Plugin aktualisieren, deaktivieren oder Migration überspringen? 3. Ausführen: Migration als erledigt markieren oder Plugin entfernen 4. Weitermachen: Core-Migration abschließen
Wichtigste Erkenntnis: Vor jedem Shopware-Update die Plugin-Landschaft aufräumen. Das spart nicht nur Zeit beim Update, sondern verbessert auch Performance und Wartbarkeit.
Brauchst du Unterstützung bei einem blockierten Update? Als Shopware-Entwickler helfe ich dir, auch komplexe Plugin-Konflikte zu lösen.
Matthias Hanske
Shopware 6 Fullstack Developer
Ich helfe E-Commerce-Unternehmen dabei, das volle Potenzial aus ihrem Shopware-Shop herauszuholen.
Brauchst du Hilfe bei deinem Shopware-Projekt?
Ich unterstütze dich gerne bei Updates, Migrationen und Entwicklung.