Migration via Datenbank: Produkte fehlen

Moin ans Forum!

Ich stecke ma wieder bei einem Problem fest, bei dem ich gerade nicht weiterkomme. Ich hoffe hier kann mir jemand einen Denkanstoß geben, da einige ja schon das Thema „Migration“ hatten.

Ich habe folgenden Fehler im Log:

[error] SWAG_MIGRATION__WRITE_EXCEPTION_OCCURRED
A write exception has occurred
{
    "entity": "product_option_relation",
    "dataId": "018a2be55bd6714a83f6daed11d7b687",
    "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 }}": "null"
            }
        },
        "source": {
            "pointer": "\/1\/translations\/2fbb5fe2e29a4d70aa5854ce7ce3e20b\/name"
        }
    }
}

Wenn ich die IDs in der Datenbank zurückverfolge, finde ich aber keine leeren name-Spalten. Alles ist befüllt.

Hat jemand eine Idee, wie da der Zusammenhang ist, dass der Name trotzdem nicht gefunden wird?
Bin über jeden Tipp dankbar…

@Krispin Ich habe gesehen, dass du bei Migrations-Fragen immer schnell und präzise helfen konntest, daher markiere ich Dich einfach mal direkt … Hättest Du da eine Idee?

Edit: Migration von 5.7 auf 6.5.4.0

LG;LA

Hi @littleAmused ,

meine erste Idee wäre:
Die product_option_relation ist die Verbindung zwischen Product und den Options/Properties.
Da es nur die Verbindung ist, müssen beide Entities (Product und Properties) vorhanden sein.
Es scheint mir, dass die Property nicht vorhanden ist und somit versucht wird diese Property zu erstellen, da bei dem Setzen der Verbindung nur die IDs im Payload sind und nicht der Name selbst, failed das Schreiben auf einen Fehler.

Würde somit sagen: Du musst nach dem eigentlichen Fehler ausschau halten, also der Fehler beim Schreiben/Converten der Property.

Ich hoffe dies hilft dir erstmal weiter.

Gruß

Krispin

P.S.: Das hört man doch gerne, dass man schnell und präzise hilft :wink:

Zu Recht! Das ging jetzt echt schnell und die Infos sind präzise :smiley:

Tatsächlich ist bei mir die product-Tabelle im SW6-Shop leer geblieben, die Properties scheinen richtig übernommen worden zu sein. Ich hab da mal einen Blick in die Tabelle swag_migration_logging geworfen, und siehe da, dort sind ein paar Fehler zu product-Entitäten :slight_smile:

{
  "entity": "product",
  "sourceId": null,
  "exceptionCode": "FRAMEWORK__WRITE_ERROR",
  "exceptionMessage": "There are 1 error(s) while writing data.1. [\/22\/uri] Dieser Wert sollte nicht leer sein.",
  "exceptionFile": "\/var\/www\/web\/htdocs\/shopware\/vendor\/shopware\/core\/Framework\/DataAbstractionLayer\/Write\/WriteContext.php",
  "exceptionLine": 43,
  "exceptionTrace": "#0 \/var\/www\/web\/htdocs\/shopware\/vendor\/shopware\/core\/Framework\/DataAbstractionLayer\/Write\/WriteContext.php(79): Shopware\\Core\\Framework\\DataAbstractionLayer\\Write\\WriteContext->__construct()#1 \/var\/www\/web\/htdocs\/shopware\/custom\/plugins\/SwagMigrationAssistant\/Migration\/Media\/MediaFileService.php(47): Shopware\\Core\\Framework\\DataAbstractionLayer\\Write\\WriteContext::createFromContext()#2 \/var\/www\/web\/htdocs\/shopware\/custom\/plugins\/SwagMigrationAssistant\/Migration\/Service\/MigrationDataConverter.php(60): SwagMigrationAssistant\\Migration\\Media\\MediaFileService->writeMediaFile()#3 \/var\/www\/web\/htdocs\/shopware\/custom\/plugins\/SwagMigrationAssistant\/Controller\/MigrationController.php(88): SwagMigrationAssistant\\Migration\\Service\\MigrationDataConverter->convert()#4 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpKernel.php(166): SwagMigrationAssistant\\Controller\\MigrationController->fetchData()#5 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpKernel.php(74): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw()#6 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/Kernel.php(197): Symfony\\Component\\HttpKernel\\HttpKernel->handle()#7 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/SubRequestHandler.php(86): Symfony\\Component\\HttpKernel\\Kernel->handle()#8 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php(473): Symfony\\Component\\HttpKernel\\HttpCache\\SubRequestHandler::handle()#9 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php(273): Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache->forward()#10 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php(287): Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache->pass()#11 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php(210): Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache->invalidate()#12 \/var\/www\/web\/htdocs\/shopware\/vendor\/shopware\/core\/HttpKernel.php(143): Symfony\\Component\\HttpKernel\\HttpCache\\HttpCache->handle()#13 \/var\/www\/web\/htdocs\/shopware\/vendor\/shopware\/core\/HttpKernel.php(65): Shopware\\Core\\HttpKernel->doHandle()#14 \/var\/www\/web\/htdocs\/shopware\/public\/index.php(71): Shopware\\Core\\HttpKernel->handle()#15 \/var\/www\/web\/htdocs\/shopware\/vendor\/symfony\/runtime\/Runner\/Symfony\/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\HttpKernelInterface@anonymous->handle()#16 \/var\/www\/web\/htdocs\/shopware\/vendor\/autoload_runtime.php(29): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()#17 \/var\/www\/web\/htdocs\/shopware\/public\/index.php(14): require_once('...')#18 {main}",
  "description": "Entity: product, sourceId: -\nThere are 1 error(s) while writing data.1. [\/22\/uri] Dieser Wert sollte nicht leer sein."
}

„URI“ darf nicht leer sein … In Verbindung mit der Erwähnung des MediaFileServices im Error habe ich da schon einen konkreten Verdacht, warum keine Produkte migriert wurden.

Wir ziehen den Shop auf einen neuen Server und haben für die Migration im ersten Schritt nur die DB kopiert, ohne FileSystem, geschweige denn dem /media-Verzeichnis. Vermutlich können die Produkte aber ohne vorhandene Bilder nicht importiert werden, kann das sein? :sweat_smile:

LG;LA

Hi @littleAmused,

also generell kann man die Migration auch ohne Medien durchführen, aber trotzdem müssen die Daten für die Medien vorhanden sein, also die URI/Pfad wo man die Medien eigentlich finden kann (auch wenn sie nicht vorhanden sind).
Müsstest somit mal schauen, was im Produkt unter swag_migration_data in der raw-Column so ankommt, da müsste ein Media-Eintrag sein, wo der path oder uri leer ist oder der entsprechende key existiert gar nicht :see_no_evil: Das wäre meine Vermutung. Meist entstehen solche Fehler durch invalide Quelldaten.

Ich hoffe dies hilft dir erstmal weiter.

Gruß

Krispin