Migration SW 5 zu SW6 - Systemfehler nach Backup-Wiederherstellung

Liebe Shopware Kollegen

Ich habe bei der Migration von Shopware 5 zu Shopware 6 ein Problem, an welchem ich mir nun seit 1 1/2 Wochen die Zähne ausbeisse. Begonnen hat alles damit, dass ich nach Abschluss einer sehr, sehr, seeeehr langen Datenbankbereinigung (ich arbeitete bislang mit einer alten xtCommerce Version) insgesamt 45’000 Fehler korrigierte. Als ich dann die Migration von Shopware 5 zu Shopware 6 durchführte, zeigte mir das System gerade noch 21 leicht korrigierbare Fehler an. Ein Fehler bezog sich auf einen toten Verkaufskanal, den ich früher mal testweise anlegte. Also dachte ich mir nicht viel dabei und löschte diesen. Damit begann dann allerdings eine Odyssee. Wie immer mache ich vor solchen Arbeiten Backups, so auch in diesem Fall. Doch als ich nach dem Löschen 22’000 Systemfehler erhielt, welche ich nicht beheben konnte, erlebte ich bei meinem Provider eine böse Überraschung. Dieser meldete mir nämlich, dass er kein Backup wiederherstellen kann, da jedes Mal eine Fehler auftritt. Da ich mit diesem Provider schon einige negative Erfahrungen machte, zog ich direkt zu einem anderen um. Dort klappte das Einspielen des Backups problemlos, allerdings sind die Systemfehler immer noch vorhanden. Und dies selbst bei älteren Backups. Wieso verstehe ich überhaupt nicht, da ich Backups eingelesen habe, bei welchen früher alles korrekt funktionierte. Ich hoffe mir kann jemand hier weiterhelfen, denn weiss echt nicht mehr weiter. Das Problem aktuell ist ja auch, dass mir durch diesen Fehler weder Kunden noch Bestellungen migriert werden.

Hier mal zwei von über 22’000 besagten Fehlermeldungen:


[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order, sourceId: 9b1e9e1d936c4b37b30e25af86fc0cd3
An exception occurred while executing 'INSERT INTO `order` (`id`, `version_id`, `billing_address_id`, `billing_address_version_id`, `currency_id`, `language_id`, `sales_channel_id`, `state_id`, `created_by_id`, `order_number`, `order_date_time`, `price`, `shipping_costs`, `currency_factor`, `deep_link_code`, `custom_fields`, `item_rounding`, `total_rounding`, `created_at`) VALUES ('O1vGjrD)','jKKu,4%','','6968','2011-12-01 16:51:00.000','{\"netPrice\":169.09,\"totalPrice\":179.41,\"calculatedTaxes\":[],\"taxRules\":[{\"extensions\":[],\"taxRate\":0.0,\"percentage\":100.0}],\"positionPrice\":170.41,\"rawTotal\":179.41,\"taxStatus\":\"gross\"}','{\"unitPrice\":9.0,\"totalPrice\":9.0,\"quantity\":1,\"calculatedTaxes\":[],\"taxRules\":[],\"referencePrice\":null,\"listPrice\":null,\"regulationPrice\":null}','1','dc00085f099b487f87fd6d39da6d1be5','{\"migration_MigrationSw6_order_swag_paypal_unified_carrier_was_sent\":0}','{\"decimals\":2,\"interval\":0.01,\"roundForNet\":1}','{\"decimals\":2,\"interval\":0.01,\"roundForNet\":1}','2023-05-22 07:57:49.823');':SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`engelisn`.`order`, CONSTRAINT `fk.order.sales_channel_id` FOREIGN KEY (`sales_channel_id`) REFERENCES `sales_channel` (`id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order, sourceId: 38b3a34fe78a407faaaa1db98fb0b6b0
An exception occurred while executing 'INSERT INTO `order` (`id`, `version_id`, `billing_address_id`, `billing_address_version_id`, `currency_id`, `language_id`, `sales_channel_id`, `state_id`, `created_by_id`, `order_number`, `order_date_time`, `price`, `shipping_costs`, `currency_factor`, `deep_link_code`, `custom_fields`, `item_rounding`, `total_rounding`, `created_at`) VALUES ('@-Mx','jKKu,4%','Al','jKKu,4%','UKG','!R=NZ6yd','mgJUAp`)','IERgKJt:G','1 OU@Y>','6962','2011-11-29 07:51:17.000','{\"netPrice\":224.41,\"totalPrice\":230.02,\"calculatedTaxes\":[],\"taxRules\":[{\"extensions\":[],\"taxRate\":0.0,\"percentage\":100.0}],\"positionPrice\":230.02,\"rawTotal\":230.02,\"taxStatus\":\"gross\"}','{\"unitPrice\":0.0,\"totalPrice\":0.0,\"quantity\":1,\"calculatedTaxes\":[],\"taxRules\":[],\"referencePrice\":null,\"listPrice\":null,\"regulationPrice\":null}','1','7d671453160ee5d8ada93b117faee822','{\"migration_MigrationSw6_order_swag_paypal_unified_carrier_was_sent\":0}','{\"decimals\":2,\"interval\":0.01,\"roundForNet\":1}','{\"decimals\":2,\"interval\":0.01,\"roundForNet\":1}','2023-05-22 07:57:49.790');':SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`engelisn`.`order`, CONSTRAINT `fk.order.sales_channel_id` FOREIGN KEY (`sales_channel_id`) REFERENCES `sales_channel` (`id`) ON UPDATE CASCADE)


Wenn ich den „schlauen“ ChatGPT um Rat frage, erhalte ich folgende Antwort:

Die Fehlermeldung während der Shopware 5 zu Shopware 6 Migration besagt, dass ein Fehler beim Einfügen von Datensätzen in die Tabelle „order“ aufgetreten ist. Der Fehler tritt aufgrund einer fehlgeschlagenen Fremdschlüssel-Einschränkung auf, die den Verkaufskanal betrifft.

Genauer gesagt scheitert die Einfügung an der Fremdschlüsselbeziehung fk.order.sales_channel_id, die sicherstellen soll, dass der sales_channel_id-Wert in der Tabelle „order“ auf einen gültigen Eintrag in der Tabelle „sales_channel“ verweist. In diesem Fall gibt es offenbar einen Konflikt bei der Zuordnung des Verkaufskanals für die betreffenden Bestellungen.

Was genau könnte da das Problem sein?

LG

Einfach die Fremdschlüsselüberprüfung beim Einfügen deaktivieren und nach dem Einfügen wieder aktivieren.

Die Reihenfolge des Einfügen hat keine Logik, daher werden Kinder vor deren Eltern eingefügt etc. Das für dann zu dem Fehlern.

Du meinst vor der Migration die Fremdschlüsselüberprüfung deaktivieren? Der Shop ist bis auf die Produkte ja eigentlich leer. D.h. die Kunden und die alten Bestellungen werden durch die Migration erfasst.

Ich hab nun vor dem Migrationslauf mal:

SET FOREIGN_KEY_CHECKS = 0;

In die DB eingetragen. Leider selber Fehler. :face_with_spiral_eyes:

Das ist echt zum verzweifeln

Ach, du fügst keine SQL-Datei ein sondern versuchst es über das Migrations-Tool. Das kann dann natürlich nicht funktionieren, da Shopware eine eigene Prüfung vornimmt, und wenn das Elternteil nicht existiert, kann das Kind nicht geschrieben werden.

Habe mich mit dem Tool zu wenig auseinandergesetzt um sagen zu können, wie das intern vorgeht. Dein Problem ist jedenfalls eindeutig. Die Import-Reihenfolge ist falsch.

Dann hoffe ich nun, dass mir jemand hier sagen kann, wie ich das Problem beheben kann. Trotzdem danke :slight_smile:

Hi @Mercator, konntet ihr das Problem lösen?

Ich habe irgendwie die Vermutung, dass es sich um Bestellungen mit Produkten handelt, die mittlerweile deaktiviert sind. Kann es sein, dass er sie deshalb nicht migrieren kann?

Ja, ich konnte die Fehler tatsächlich beheben und bin nun eeeeendlich in Shopware 6 live. :slight_smile: Es waren allerdings diverse Probleme wie z.B. eine falsche Zuordnung des Verkaufskanals bei der Migration. D.h. gewisse Tabellen wurden mit einem falschen Verkaufskanal befüllt. Wieso das geschah weiss ich nicht. Ich habe nun alle betroffenen Tabellen durchgeschaut und den Verkaufskanal entsprechend per sql Befehl geändert. Bei mir war sicher auch schwierig, dass ich von einem Urgestein von Shopsystem (xtCommerce 3.04) auf Shopware 6 migriert hatte. Der grösste Schrecken war vor rund 6 Monaten, als ich entdeckte, dass Bestellungen zum Teil völlig falschen Kunden zugeordnet wurden (also bereits in xtCommerce). Ich habe daraufhin sicher an die 300 Abfragen gemacht und manuell jede Bestellung dem korrekten Kunden zugeordnet. Das war eine Monsterarbeit. Somit bin ich froh, dass Thema Migration abschliessen zu können. :slight_smile: