Zum Hauptinhalt springen
Shopware

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.

Shopware 6 Plugin Migration Update Troubleshooting

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.

MH

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.