Migration SW5 zu SW6, keine Übernahme von Kunden und Bestellungen

Hallo zusammen, ich habe eine aktuelle SW6 Installation 6.5.7.3 auf der ich meine Anpassungen vorgenommen haben. Nachdem nun alles läuft wollte ich zum Schluss die Kunden und Bestellungen aus dem SW5 übernehmen. die Migration läuft lt. Backend ohne Fehler durch. Doch leider werden keine Bestellungen und Kunden importiert. Ein Blick in das Log ergibt folgendes Bild (leider kann ich diese nicht posten, da zu lang.
Es treten aber immer wieder drei Fehler auf

[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: number_range, sourceId: 018d165e1eb473f48e8126359c262a3d
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 (`d03c966a`.`number_range_sales_channel`, CONSTRAINT `fk.number_range_sales_channel.sales_channel_id` FOREIGN KEY (`sales_channel_id`) REFERENCES `sales_channel` (`id`) ON DELETE CASCADE ON UPD)
[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: customer, sourceId: 018d165e21d371fa89d7d63da13faa59
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 (`d03c966a`.`customer`, CONSTRAINT `fk.customer.sales_channel_id` FOREIGN KEY (`sales_channel_id`) REFERENCES `sales_channel` (`id`) ON UPDATE CASCADE)

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361da0d3bac0",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/2\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361da0c1757c",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/1\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361d9ff4cfd9",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/0\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361da143ffc2",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/3\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361da221c453",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/4\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a697029b4e3361da238ebde",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/5\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "shipping_method",
    "dataId": "018d165e2a6a71c790843e99d8127c3e",
    "error": {
        "code": "c1051bb4-d103-4f74-8988-acbcafc7fdc3",
        "status": "400",
        "detail": "Dieser Wert sollte nicht leer sein.",
        "template": "This value should not be blank.",
        "meta": {
            "parameters": {
                "{{ value }}": "\"\""
            }
        },
        "source": {
            "pointer": "\/6\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/description"
        }
    }
}
[error] SWAG_MIGRATION_RUN_EXCEPTION
An exception occurred
Entity: order, sourceId: 018d165e2dc6724e82ef7ddabba981f3
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 (`d03c966a`.`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_document, sourceId: 018d165e3e2d70b29e04c1689d054c72
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 (`d03c966a`.`document`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)

Was kann ich tun um diese zu beheben, damit ich meine Daten übernehmen kann?

Danke

Ich habe nun nochmals einen Test mit einer frischen Installation gemacht. Dort werden die Daten importiert. Exportiere ich dann diese Daten und versuche sie in den bestehenden SW6 einzulesen erhalten ich diese Fehler:

1. [/0/salesChannel/typeId] Dieser Wert sollte nicht leer sein.
1. [/0/salesChannel/currencyId] Dieser Wert sollte nicht leer sein.
1. [/0/salesChannel/shippingMethodId] Dieser Wert sollte nicht leer sein.
1. [/0/salesChannel/countryId] Dieser Wert sollte nicht leer sein.
1. [/0/salesChannel/navigationCategoryId] Dieser Wert sollte nicht leer sein.
1. [/0/salesChannel/accessKey] Dieser Wert sollte nicht leer sein.

Ich bin mir nicht ganz sicher, aber ich glaube, dass ich beim ersten SW6 damals verschiedene Verkaufskanäle angelegt hatte und auch wieder gelöscht. Kann es also sein, dass er in den „Ursprungsverkaufskanel“ nichts mehr importieren kann (weil vielleicht nach ID nicht mehr existent) und deshalb die Fehler auftreten?

Der/die ursprünglichen Verkaufskanäle (u.a.) von der ersten Migration dürfen nicht gelöscht werden, sonst funktionieren weitere Migrationen nicht mehr richtig.

Den Verkaufskanal sollte man erst nach abgeschlossener/finaler Migration löschen/etc.

Das war das Problem. Habe in deinem Beitrag: Migration Produkte von Shopware 5 Fehler: The language cannot be deleted because foreign key constraints exist - GELÖST die Lösung gefunden. Nun konnte ich alles übernehmen! Herzlichen Dank!

1 „Gefällt mir“

So klein ist die Forumswelt :wink:

Freut mich - weiterhin viel Glück und Erfolg.

Eine Frage habe ich leider doch noch. Ich habe gerade gesehen, dass nur 34 Bestellungen von insgesamt 416 übernommen werden. Dieses Verhalten ist sowohl im neuen Testshop als auch im alten.
Wenn ich über die Konsole den Import ausführe erhalte ich folgendes:

[============================] 1/1 Read language
[============================] 1/1 Read category_custom_field
[============================] 30/30 Read category
[============================] 1/1 Read customer_group_custom_field
[============================] 4/4 Read customer_group
[============================] 1/1 Read currency
[============================] 2/2 Read sales_channel
[============================] 9/9 Read number_range
[============================] 1/1 Read customer_custom_field
[============================] 477/477 Read customer
[============================] 10/10 Read shipping_method
[============================] 1/1 Read order_custom_field
[============================] 416/416 Read order
[============================] 1/1 Read order_document_custom_field
[============================] 820/820 Read order_document
[============================] 7/7 Write shipping_method
[============================] 382/382 Write order
[============================] 739/739 Write order_document
[>---------------------------]   0/801 Process media12:50:55 CRITICAL  [console] Error thrown while running command "migration:migrate customersOrders". Message: "Handling "SwagMigrationAssistant\Migration\MessageQueue\Message\ProcessMediaMessage" failed: Media for id 018d16ccc75c73e192487907a36116e2 not found." ["exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …},"command" => "migration:migrate customersOrders","message" => "Handling "SwagMigrationAssistant\Migration\MessageQueue\Message\ProcessMediaMessage" failed: Media for id 018d16ccc75c73e192487907a36116e2 not found."]

In HandleMessageMiddleware.php line 129:

  Handling "SwagMigrationAssistant\Migration\MessageQueue\Message\ProcessMediaMessage" failed: Media for id 018d16ccc
  75c73e192487907a36116e2 not found.


In MediaException.php line 203:

  Media for id 018d16ccc75c73e192487907a36116e2 not found.


migration:migrate <dataSelections>...

Hast Du hier noch eine Idee wo hier das Problem liegt?

So wie es auf die Schnelle aussieht, können Order-Documents nicht importiert werden. Kann es sein, dass zu Bestellungen die Dokumente in S5 fehlen/gelöscht wurden?

Gute Frage. Gibt es eine Möglichkeit wie ich herausfinden kann zu was oder wem die ID gehört? Komisch ist, dass wenn ich in der Konsole die SEO URLS importieren lasse, es ebenfalls mit zum Abbruch kommt mit dem gleichen Fehler: Media for id 018d16ccc75c73e192487907a36116e2 not found.

Nach mehreren Migrationen kann ich nur sagen, dass alle Einträge in der SW5 DB absolut korrekt und vollständig sein müssen. Hier gibt es ätzend viele Stolperfallen wodurch Kunden, Bestellungen, Produkte, Medien, Newsletter, Bewertungen etc. ggf. nicht migriert werden.

Vielleicht mal in die SW6 Tabelle „media“ schauen ob es die ID gibt und was hier ggf. steht.

Auch das ist durchaus möglich. Wir hatten auch solche Fälle. Ich habe dann ein Script für SW5 geschrieben, was die Inhalte durchsucht. Man muss sich ggf. eigene Hilfsmittel schaffen um Herr der Lage zu werden.

1 „Gefällt mir“

Hast du das Skript noch, könnte man ja hier für die Interessierten posten - wenn es anderen bei der Migration auch hilft?

Ich persönlich habe es dann MigrationsCheck genannt. Das Teil ist jetzt ziemlich groß geworden und mittlerweile wurde sehr viel Zeit investiert, weshalb ich das alles nicht online stelle. Würde die Migration halbswegs sauber laufen, hätte ich darauf gern verzichtet. Leider sah die Realität doch anders.

Was ich allerdings vermitteln kann, sind die Punkte welche ich vorher überprüfe, weil ich hier bei alten SW5 Shop permanent auf die Fresse geflogen bin. Zumindest kann ich damit vor einer Migration den größten Teil erst einmal prüfen und im SW5 beheben. Und das Migrationslog wird wesentlich übersichtlicher :slight_smile:

Damit man halbswegs alle Daten bekommt bleibt einem nichts übrig um so etwas zu bauen. Ich habe den Aufwand allerdings gemacht, weil wir mehrere Shop auf SW6 umstellen. Eine Mamut-Aufgabe für ein Jahr :frowning:

'Check Versandarten mit eigenen Berechnungen',
'Könnte bei der Migration zu Problemen führen ' 

'Check Bestellungen ohne Zahlungsarten: Tabelle s_order <-> s_core_paymentmeans',
'Zahlungsarten mit paymentID gibt es nicht mehr'

'Check Bestellungen ohne Versandarten: Tabelle s_order <-> s_premium_dispatch',
'Versandarten mit dispatchID gibt es nicht mehr.  Query: UPDATE s_order SET dispatchID = ? WHERE dispatchID IN (?) ' 

'Check Bestellungen ohne Kunden: Tabelle s_order <-> s_user',
'Kunden zu diesen Bestellungen sind nicht mehr vorhaben. Bestellung ein Dummy-Kunde zuweisen oder löschen.'

'Check Artikel 1, falsche Bildeinträge: Tabelle s_articles_img <-> s_media',
'Verweise zu Medien aus DB entfernen. Bilder ggf. später neu zuweisen Query: DELETE FROM s_articles_img WHERE articleID IN (?)'

'Check Artikel 2, Bilder ohne media_id: Tabelle s_articles_img',
'Verweise zu Medien aus DB entfernen. Query: DELETE FROM s_articles_img WHERE articleID IN (?)'

'Check Artikel mit Maximalabnahme 0: Tabelle s_articles_details',
'Artikel mit Maximalabnahme 0 lassen in SW6 nicht mehr bestellen. Vor Migration prüfen.  Query: UPDATE s_articles_details SET maxpurchase = null WHERE instock > 0 AND laststock = 0 AND maxpurchase = 0 '

'Check Anrede bei User: ',
'Diese Anreden sind im System nicht definiert! ' 

'Check Anrede bei Bestellung: ',
'Diese Anreden sind im System nicht definiert! ' 

'Check Artikel Lieferzeiten: Tabelle s_articles_details',
'Lieferzeiten sollten von bis haben, also mit "-" Zeichen getrennt. Query: UPDATE s_articles_details SET shippingtime = ? WHERE ordernumber = ? ' 

'Check User: Tabelle s_user',
'Anrede, Vor- und Nachname müssen komplett sein' 

'Check Adressen User: Tabelle s_user_addresses',
'Anrede, Vor- und Nachname müssen komplett sein'

'Check Adressen User: Tabelle s_user_billingaddress',
'Anrede, Vor- und Nachname müssen komplett sein'

'Check Adressen User: Tabelle s_user_shippingaddress',
'Anrede, Vor- und Nachname müssen komplett sein'

'Check Adressen Bestellungen: Tabelle s_order_billingaddress',
'Anrede, Vor- und Nachname müssen komplett sein'

'Check Adressen Bestellungen: Tabelle s_order_shippingaddress',
'Anrede, Vor- und Nachname müssen komplett sein' 

'Check vollständige Artikelbewertungen: Tabelle s_articles_vote ',
'Bewertungen ohne Kommentar. Feld "comment" nicht befüllt. Query: UPDATE s_articles_vote SET `comment` = '-' WHERE `comment` = '' ' 

'Check SEO URLs: Tabelle s_core_rewrite_urls ',
'URLs ohne Subshop' 

'Check Documents: Tabelle s_order_documents ',
'Es wurden Dokumente (Rechnungen etc.) erstellt, sind aber nicht mehr vorhanden.' 

Im Einsatz sieht es dann in etwa so aus:

1 „Gefällt mir“

Herzlichen Dank. Dank der Übersicht konnte ich alle Fehler beheben und nun hat es funktioniert!

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.