Shopware Updates Debuggen

Tabelle s_schema_version

Da die Deltas des Update per php-script eingespielt werden, wird die Ausführung der einzelnen Deltas sowie entsprechende Fehlermeldung beim Einspielen in der Tabelle s_schema_version geloggt. Fehlermeldungen tauchen in der Spalte error_msg auf. Steht hier ein Null, so wurde das Delta erfolgreich ausgeführt. Falls es einen Fehler beim Einspielen eines Deltas gibt, so wird die Fehlermeldung in die Spalte error_msg geschrieben.

Die Deltas findest Du unter /update-assets/migrations. Ob diese auch eingespielt wurden, kannst Du in der o.g. Datenbanktabelle kontrollieren. Überprüfe, ob für die Migration ein Eintrag vorhanden ist und ob die Felder start_date und end_date ein korrekter Timestamp ist (YYYY-MM-DD HH:MM:SS) und das Feld error_msg auf Null steht.

Falls es zu Problemen beim Einspielen der Deltas kommt, so empfehlen wir zuerst das komplette Datenbank-Backup zurückzuspielen und nachfolgend die aufgezeigten Fehler zu korriegen. Alternativ kannst Du das Delta auch per Hand einspielen (ausführen). In diesem Fall muss der entsprechende Eintrag in der s_schema_version gesetzt werden (s.o.). Sollte das Delta bereits korrekt in der Datenbank gesetzt sein, so kannst Du bei "error_msg" das NULL und bei "end_date" ein Enddatum setzen. Wird nun der Updater erneut ausgeführt, so wird dieses Delta übersprungen.

FAQ

Update unmöglich: Software-Subscription

Der Auto Updater kann die folgende Meldung anzeigen:

"Für ihre eingesetzte Shopware Version konnte keine aktive Software-Subscription ermittelt werden. Das Auto-Update kann aktuell nicht durchgeführt werden."

Hast Du eine aktive Subscription und erscheint diese Meldung dennoch, ist eine Lizenz in der Datenbank hinterlegt, die nicht aktuell ist. Prüfe dann folgende Schritte. Möglicherweise kannst Du nicht alle Schritte prüfen, da der Lizenz-Manager nicht mehr vorhanden ist oder der Bereich "Shopware-Lizenz" lädt:

  • Unter Einstellungen > Grundeinstellungen > Weitere Einstellungen > Lizenz-Manager dürfen nur aktuell gültige Lizenzeinträge vorhanden sein, die als Host auch die Domain haben, die aktuell im Shopware Account registriert ist
  • Unter Einstellungen > Grundeinstellungen > Weitere Einstellungen > Shopware-Lizenz trage bitte die aktuelle Lizenz aus Deinem Shopware Account ein
  • In der Tabelle s_core_licenses muss zunächst der Eintrag mit dem Label Shopware Core gelöscht werden. Die Shopware Lizenz sollte danach über das Backend unter Grundeinstellungen > Weitere Einstellungen > Shopware-Lizenz neu eingepflegt werden. Sofern dies das Verhalten nicht behebt, muss die Tabelle zudem auf abgelaufene Plugin-Lizenzen überprüft werden. Diese Einträge müssen dann ebenfalls gelöscht werden, damit ein Update durchgeführt werden kann.

Foreign-Key Errors

Frontend:


No mapping found for field '***' on class 'Shopware\Models\Attribute\***'. in vendor/doctrine
 

oder


 
Fatal error: Cannot redeclare Shopware\Models\Attribute\CustomerGroup::$customerGroup in /var/www/production/shopware/engine/Shopware/Models/Attribute/CustomerGroup.php on line 84
 

Backend:


 
Fatal error: Cannot redeclare Shopware\Models\Attribute\User::$user in /var/www/production/shopware/engine/Shopware/Models/Attribute/User.php on line 84
 

Mögliche Ursache können defekte Beziehungen in den Datenbank-Tabellen sein, zur Korrektur kannst Du die Foreign-Keys reparieren. Leere im Anschluss den Cache manuell auf Datei-Ebene unter /var/cache und web/cache!

Wartungsmodus nicht beendet

Sollte Dein Frontend oder Backend nach dem Update weiterhin den Wartungsmodus anzeigen, musst Du einen Ordner im Shopware-Verzeichnis löschen. Unten in der Beschreibung erklären wir Dir, welche dies sind.

 

Der Wartungsmodus sollte automatisch vom Updatescript von Shopware beendet werden. Falls dies nicht der Fall ist, hatte das Script nicht genügend Rechte um den Updateordner wieder zu löschen. Bitte gib dem Benutzer, mit dem der PHP-Prozess läuft, genügend Rechte um diese Aktion durchzuführen, damit das Update beim nächsten Mal komplett automatisch durchgeführt werden kann. Lösche bitte als nächstes die folgenden Ordner:

Beim Auto-Update: /files/update

Beim manuellen Update: /update-assets

Zuletzt angeschaut funktioniert nicht korrekt

Sollte der Artikelverlauf "zuletzt angeschaut" bei Dir nicht mehr korrekt funktionieren, so dass z.B. der Footer der Seite nicht mehr korrekt dargestellt werden kann, so kann die Ursache sein, dass das Template abgeleitet wurde und somit die Änderung aus dem Standard-Template nicht korrekt greifen kann.

Prüfe daher bitte folgende Datei: /templates/emotion_meintemplate/frontend/index/index.tpl

Ggf. ist dort noch folgender Inhalt enthalten:


 
{block name="frontend_index_footer"}
 {if $sLastArticlesShow}
    {action module=widgets controller=lastArticles}
 {/if}
{/block}
 

Dieser Teil ist dann durch folgenden neuen Code zu ersetzen:


 
{block name="frontend_index_footer"}
 {if $sLastArticlesShow && !$isEmotionLandingPage}
  {include file="frontend/plugins/index/viewlast.tpl"}
 {/if}
{/block}
 

Wir empfehlen, zusätzlich zu prüfen, ob die Datei: /templates/_default/frontend/plugins/index/viewlast.tpl dem Standard entspricht. Leere im Anschluss den Cache des Shops.

initTopSeller?offset=0&limit=15

Erhältst du die Meldung "Internal Server Error: initTopSeller?offset=0&limit=15" ist die Topseller-Box deaktiviert worden (chartInterval = 0). Diese Konfiguration kann unter Umständen beim Update zu diesem Fehler führen. Einfach vor dem Update die Topseller-Box aktivieren.

The target-entity Shopware\Models\Attribute

Eine Meldung wie "The target-entity Shopware\Models\Attribute\... cannot be found in ..." erscheint, wenn die Attribut Models nicht korrekt generiert werden konnten. Falls möglich leere den kompletten Cache im Backend oder verwende das Consolen-Command bin/console sw:generate:attributes

importDatabase?XXX - Forbidden

Bekommst du die Meldung "importDatabase?offset=XXX&totalCount=XXX - Forbidden" kontrolliere, ob mod_evasive die Requests ablehnt und deaktiviere dieses Modul gegebenenfalls.

Choose a smaller batch size

Erhältst Du die Meldung "Choose a smaller batch size" beim Auto-Update kontrolliere, ob im Ordner /files defekte Update-Dateien liegen (z.b. 0 Byte Dateien) und entferne diese.

Could not apply migration

Fehlermeldung:


 
Error
Received the following error message:
Could not apply migration: SQLSTATE[HY000]: General error: 1005 Can't create table 'database.#sql-xx_xx' (errno: 121)

Please try to fix this error and restart the update.
Response
{"valid":false,"errorMsg":"Could not apply migration: SQLSTATE[HY000]: General error: 1005 Can't create table 'database.#sql-xx_xx' (errno: 121)"}
 

In diesem Fall kann ein konkreter Migrationsschritt nicht ausgeführt werden. Die Migrationsschritte werden im Ordner update-assets/migrations oder auf GitHub mit der jeweiligen Migrationsnummer angezeigt. Die Nummer der Migration wird Dir in der Meldung ausgegeben und Du kannst dann in die Datei mit der passenden Nummer die einzelnen Queries sehen, die dieser Migrationsschritt ausführen würde.

Mögliche Ursachen:

  • 1. Datenbank Strict-Mode noch aktiv.
  • 2. Foreign Keys defekt (zum Wiki Artikel).
  • 3. Prüfe, ob noch genug Speicherplatz frei ist.
  • 4. Systemvoraussetzung: Datenbank bzw. MySQL Version wird nicht erfüllt.
  • 5. Fehler beim Anwenden des SQL-Deltas (Überprüfung Tabelle s_schema_version - siehe oben).
  • 6. Tabelle soll angelegt werden, ist aber bereits vorhanden, z.B. da nach einem fehlerhaften Update die Datenbank nicht zurückgesetzt wurde bevor das Backup zurückgespielt wird.

SmartyCompilerException

Eine Meldung wie diese 'SmartyCompilerException' with message 'Syntax Error in template "/x/x/x.tpl"...{s name='IndexXmlLang'}{/s} unknown tag "s" stammt von einem inkompatiblen Pluign oder Theme-anpasungen. Mit dem Debug-Modus kann die Exception komplett ausgelesen werden: https://developers.shopware.com/developers-guide/shopware-config/#exceptions

War dieser Artikel hilfreich?