Zahlreiche errors bei der Migration von Kunden und Bestellungen auf Shopware 6

Hallo,

Die Migration der Produkte war kein Problem. Aber bei den Kunden und Bestellungen hagelt es folgende Fehler und nix wir importiert:

Entity: order, sourceId: 0197e9e7927872ef85a9ff1a0087b105
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 (`db`.`order_customer`, CONSTRAINT `fk.order_customer.customer_id` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE)
Entity: customer, sourceId: 0197e9e4b3d372dabdbe4086860bf17f
An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1364 Field 'default_payment_method_id' doesn't have a default value
Entity: order_document, sourceId: 0197e9eca426702caf26fcb52aef73ee
An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1364 Field 'file_type' doesn't have a default value

Was sagt uns das?
Wo finde ich denn diese Felder bloß?
Hat da jemand einen Tipp?

Grunsätzlich sollte/muss man vor der Migration die SW5 DB erst analysieren und ggf. anpassen. Alle Daten (Kunden, Bestellungen, Versand, Zahlungsarten) müssen korrekt hinterlegt sein, was bei SW5 teilweise nicht der Fall ist/war. Je älter der SW5, umso fehlerhafter die DB und um so schlimmer dann die Migration.

Hierzu muss man wissen, dass die z.B. Bestellungen erst übernommen werden, wenn der Kunde dazu existiert. Fehler beim Kunden, weil seine Daten in SW5 unvollständig sind, kann die Bestellung nicht angelegt werden und erzeugt Fehler. Gleiches gilt auch, wenn bei Bestellungen Versandarten oder Zahlungsarten fehlen (bei uralten Bestellungen).

Die Migration muss sauber vorbereitet werden, sonst kommt ihr nicht weiter. Bei den Kunden müssen alle Felder wie Anrede, Vorname, Nachname, Ort etc. in allen DB-Tabellen komplett bzw. korrekt sein. Alle Bestellungen müssen aktive Versandarten und Zahlungsarten haben. Diese Punkte solltet ihr als erstes prüfen bzw. prüfen lassen.

Das kann je nach Umfang vom SW5 Shop viel Arbeit bedeuten (ich kann dazu ein Buch schreiben) aber wenn ihr eine Migration machen wollt, kommt ihr nicht um diese Arbeit herum.

Vor der Migartion die SW5 DB prüfen lassen ob alles vollständig und korrekt hinterlegt ist.

Mit dieser UUID könnte man das Mapping untersuchen und so an die Quelldaten heran kommen. Beispiel:

SET @SourceID = '0197e9e7927872ef85a9ff1a0087b105';
SELECT mm.old_identifier, md.entity, md.raw 
FROM swag_migration_mapping mm, swag_migration_data md 
WHERE md.mapping_uuid = mm.id AND mm.id = UNHEX(@SourceID);

eventuell auch:

SET @DataID = '0197e9e7927872ef85a9ff1a0087b105';
SELECT entity, raw FROM swag_migration_data WHERE id = UNHEX(@DataID);

Danke für die Antwort.
Auf SW5 Seite werde ich das mal zu prüfen versuchen …

Mit dieser UUID könnte man das Mapping untersuchen und so an die Quelldaten heran kommen. Beispiel:

Da kommt nichts. Ich denke mal, da wurde wegen dem error erst gar nichts geschrieben.

Entity: customer, sourceId: 0197e9e4b3d372dabdbe4086860bf17f
An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1364 Field 'default_payment_method_id' doesn't have a default value

Diese Fehler geben mir auch Rätsel auf. default_payment_method_id ist doch ein feld in SW6 …

Hier würde ich prüfen, ob bei der Migration die Zahlungsarten korrekt verbunden ist (muss man i.d.R. als erstes machen). Und ich ich prüfen ob die Verkaufskanäle eine Standard-Zahlungsart haben.

Da muss etwas sein, da diese „sourceId“ durch die Migration erzeugt und beim Mapping hinterlegt wird, sprich als Verweis.

Ich komme mit diesen Fehlern nicht weiter:

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: customer, sourceId: 0197f99a8b1673cebf3fc07081148a1c
An exception occurred while executing a query: SQLSTATE[HY000]: General error: 1364 Field 'default_payment_method_id' doesn't have a default value

Das Mapping habe ich durchfgeführt.

Hier z.B. steht in swag_migration_data:

"defaultpayment":{"id":"5","name":"prepayment", ...

Also Vorkasse. Bei den Zuwesungen der Zahlungsart habe ich „Zahlung per Vorkasse“ auf „Vorkasse“ eingestellt. Das sollte doch eigentlich reichen.

Ist die Zahlungsart Vorgasse im SW5 mal verändert worden? Bei meinen ganzen Migrationen hatt ich hier keine Probleme. Probleme nur, wenn Bestellungen migriert werden wo Zahlungsarten gelöscht wurden. Ja, ansonsten einfach neu zuweisen.

Nein.
Vorkasse ist ja auch nur ein Beispiel. Wie es aussieht betrifft es alle Zahlungsarten.

Beim Mapping habe ich Standard-Zahlungsart auf Nachname gemappt, Nachname ist im alten Shop inaktiv. Ob das ein Problem ist? Teste ich gerade.

Zudem gibt es in swag_migration_mapping bei der entity payment_method einen Eintrag „default_payment_method“ im Feld old_„oidentifier“. Das ist korrekt so?

Ja, ist richtig. Steht bei der entitiy_uuid auch eine ID drin (idealerweise die richtige)?