Update von 6.7.14.2 auf 6.7.15.0 - Fehler

Das Update bricht ab, der Shop ist nicht erreichbar. habe diese auf einer Stage-Umgebung durchgeführt.

der Abbruch erfolgt ab’:

---------- ---------------------- 
  Action     Number of migrations  
 ---------- ---------------------- 
  Migrated   2 out of 13           
 ---------- ---------------------- 
10:28:13 CRITICAL  [console] Error thrown while running command "database:migrate core --all=1". Message: "
Migration error: An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`usrdb_xxl`.`#sql-d689e_5abc3a`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON DELETE RESTRICT ON UPDATE CASCA)\n
Trace: \n

Ich vermute, das hier Zuordnungen von Bestellungen und deren Dokumente (bei uns wohl Rechnungen) nicht stimmen.

Die KI sagt mir, das wohl ausgerechnet hier Shopware bei diesem Update eine Änderung in der DB durchführt. Wie kann man das beheben? Muss man die betroffenen Bestellungen entfernen? Wie würdet Ihr vorgehen?

Vielen dank schonmal im voraus.

erstmal ein backup einspielen damit der shop wieder läuft

Ja, also wie gesagt, ich habe dieses erstmal in einer Stage-Umgebung durchgeführt. Das Live-System ist noch nicht geupdatet. Nach dem einspielen des BackUps läuft auch die Stage wieder. Noch jemand eine Idee?

gab es ne fehlemeldung beim update oder im log nach schauen

Vielleicht vor dem Update mal

SET FOREIGN_KEY_CHECKS = 0;

setzen und nach dem Update dann wieder zurück

SET FOREIGN_KEY_CHECKS = 1;

Vielleicht in dem Zusammenhang mal prüfen, ob

restrict_fk_on_non_standard_key = 0

gesetzt ist (Bug bei MySQL 8.4). Ist jetzt nur so eine Idee.

Das werde ich mal am Montag prüfen… super Idee. Ich melde mich. Vorab gutes WE Euch allen.

Deine Schema bzw. Keys einer Tabelle sind nicht in Ordnung. Das heißt eine frühere Migration ist schon einmal nicht korrekt durchgeführt worden.

Der Vorschlag FK Check zu deaktivieren ist hier sicherlich nicht sinnvoll (und wird vermutlich auch nicht funktionieren), da du ja das Problem beheben möchtest und nicht einfach umgehen und ggf. noch mehr Probleme und kaputte Datensätze in der Zukunft haben möchtest.

Am besten einen leeren Shop installieren und Schauen, wie das Schema der Tabelle in der Version vor dem Update ist und diesen dann in der Live „erzeugen“ so dass das Update ohne Fehler durchläuft.

SELECT
    LOWER(HEX(d.id)) AS document_id,
    LOWER(HEX(d.order_id)) AS order_id,
    LOWER(HEX(d.order_version_id)) AS order_version_id,
    d.created_at
FROM `document` AS d
LEFT JOIN `order` AS o
    ON o.id = d.order_id
   AND o.version_id = d.order_version_id
WHERE d.order_id IS NOT NULL
  AND d.order_version_id IS NOT NULL
  AND o.id IS NULL;

damit solltest du die kaputten einträge kriegen