Update auf Shopware 5.5.4: Fehler (Migration1445)

Bitte seid so nett und gebt uns einen Hinweis, wie folgende Fehlermeldung beim Aktualisieren von Shopware 5.5.3 auf 5.5.4 vermieden werden kann:
 

Error
Received the following error message:
Could not apply migration (Migrations_Migration1445). Error: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‚resourceID‘ cannot be null

Please try to fix this error and restart the update.
Response

{„valid“:false,„errorMsg“:"Could not apply migration (Migrations_Migration1445). Error: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‚resourceID‘ cannot be null "}

Sicherheitshalber pushen wir die Frage in der Hoffnung, dass vielleicht mittlerweile jemand eine Idee dazu haben möge. Alle Daumen & Glücksbringer sind gedrückt  Foot-in-Mouth

Moin @hagen-deutschland‍,

es scheint mir so, als hättet ihr die ACL Resource mit Namen “order” gelöscht.
Also:
Im Backend unter “Einstellungen” > “Benutzerverwaltung” > “Regeln & Berechtigungen editieren” fehlt bei dir scheinbar “order”.
Warum das bei euch verschwunden ist, kann ich dir leider auch nicht beantworten. Vermutlich habt ihr das einfach gelöscht.

Das kannst du auch über ein SQL Statement über deine Datenbank testen:

SELECT id FROM s_core_acl_resources WHERE name = "order")

Hier  muss  bei dir ein Ergebnis kommen - ich schätze aber, dass in eurem System kein Ergebnis auftaucht, und da liegt auch das Problem.
Die genannte Migration erwartet die ID von dieser Resource, ist vielleicht auch nicht ganz optimal gelöst.

Also, was kannst du tun?
Falls ihr die “Order” Rechte bewusst gelöscht habt:

  1. Das Update über das Dateisystem hochladen, nicht ausführen! (klick mich)
  2. Die Datei _sql/migrations/1445-add-delete-document-right.php öffnen
  3. In der Methode “up” direkt innerhalb der ersten Zeile einen “return” einfügen
  4. Anschließend dürfte das Update laufen, es kann aber zu Folgeproblemen kommen (bspw. wird es nicht mehr möglich sein Dokumente zu löschen)

Falls das eher ein Versehen war:
Das folgende SQL Statement sollte die Datensätze wieder herstellen.
Aber  Vorsicht : Ggf. sind die ID-Spalten schon anderweitig besetzt - die musst du dann natürlich aus dem SQL Statement entfernen bzw. eben neu setzen:

INSERT INTO `s_core_acl_resources` (`id`, `name`, `pluginID`) VALUES
    (14, 'order', NULL);

INSERT INTO `s_core_acl_privileges` (`id`, `resourceID`, `name`) VALUES
    (57, 14, 'create'),
    (58, 14, 'read'),
    (59, 14, 'update'),
    (60, 14, 'delete');

Hilft euch das etwas weiter?

Gruß,
Patrick  Shopware

1 „Gefällt mir“

Patrick, du bist ein Held!

Es ist fantastisch, es hat geklappt! Vielen herzlichen Dank, juuhuuu! Smile