Could not convert database value "2022-05-12" to Doctrine Type datetime. Expected format: Y-m-d H:i:s

Seit 8 Tagen haben wir in unserer Shopwareinstallation einen merkwürdigen Fehler, der nur bei der Nutzung von Paypal auftritt.
Installiert ist die Version 5.7.11

Der Kunde kann die Bestellung bis zum Paymentdienst und dessen Checkout ausführen und kommt nach Zahlungsauthorisierung wieder zurück in den Shop wo folgende Fehlermeldung erscheint:

Could not convert database value „2022-05-12“ to Doctrine Type datetime. Expected format: Y-m-d H:i:s in shoproot-bj4m /shop/p/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php on line 53

#0 shoproot-bj4m /shop/engine/Shopware/Components/Model/DBAL/Types/DateTimeStringType.php(69): Doctrine\DBAL\Types\ConversionException::conversionFailedFormat('2022-05-12', 'datetime', 'Y-m-d H:i:s')
#1 shoproot-bj4m /shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php(457): Shopware\Components\Model\DBAL\Types\DateTimeStringType->convertToPHPValue('2022-05-12', Object(Doctrine\DBAL\Platforms\MySqlPlatform))
#2 shoproot-bj4m /shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php(314): Doctrine\ORM\Internal\Hydration\AbstractHydrator->gatherRowData(Array, Array, Array)
#3 shoproot-bj4m /shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php(143): Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateRowData(Array, Array)
#4 shoproot-bj4m /shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php(268): Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateAllData()
#5 shoproot-bj4m /shop/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(963): Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll(Object(Doctrine\DBAL\ForwardCompatibility\Result), Object(Doctrine\ORM\Query\ResultSetMapping), Array)
#6 shoproot-bj4m /shop/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php(203): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadAll(Array, NULL, NULL, NULL)
#7 shoproot-bj4m /shop/custom/plugins/SwagPaymentPayPalUnified/Components/Services/CartRestoreService.php(49): Doctrine\ORM\EntityRepository->findBy(Array)
#8 shoproot-bj4m /shop/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/AbstractPaypalPaymentController.php(193): SwagPaymentPayPalUnified\Components\Services\CartRestoreService->getCartData()
#9 shoproot-bj4m /shop/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/PaypalUnifiedV2.php(126): SwagPaymentPayPalUnified\Controllers\Frontend\AbstractPaypalPaymentController->handleOrderWithSendOrderNumber(Object(SwagPaymentPayPalUnified\PayPalBundle\V2\Api\Order), 'PayPalClassicV2')
#10 shoproot-bj4m /shop/engine/Library/Enlight/Controller/Action.php(186): Shopware_Controllers_Frontend_PaypalUnifiedV2->returnAction()
#11 shoproot-bj4m /shop/engine/Library/Enlight/Controller/Dispatcher/Default.php(467): Enlight_Controller_Action->dispatch('returnAction')
#12 shoproot-bj4m /shop/engine/Library/Enlight/Controller/Front.php(225): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#13 shoproot-bj4m /shop/engine/Shopware/Kernel.php(197): Enlight_Controller_Front->dispatch()
#14 shoproot-bj4m /shop/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#15 shoproot-bj4m /shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(479): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Object(Shopware\Kernel), Object(Symfony\Component\HttpFoundation\Request), 1, true)
#16 shoproot-bj4m /shop/engine/Shopware/Components/HttpCache/AppCache.php(266): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#17 shoproot-bj4m /shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(452): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#18 shoproot-bj4m /shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(346): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true)
#19 shoproot-bj4m /shop/engine/Shopware/Components/HttpCache/AppCache.php(192): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#20 shoproot-bj4m /shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(224): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#21 shoproot-bj4m /shop/engine/Shopware/Components/HttpCache/AppCache.php(117): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#22 shoproot-bj4m /shop/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#23 {main}

Welche Tabelle erwartet auf einmal ein anderes format und vor allem … weshalb?

Toll wäre natürlich ein Lösungsansatz …

vielen Dank

Du solltest auf Paypal 3 zurückgehen bis das neue Plugin läuft. Das Forum ist voll davon wie toll das Plugin läuft.

Moin @msskft,

hmm das ist in der Tat ein komischer Fehler. Schau mal bitte in deine Datenbanktabelle s_order und guck ob die DateTimes dem richtigen Format entsprechen „Y-m-d H:i:s“ (Jahr-Monat-Tag Stunde:Minute:Sekunde)

LG Dennis

Hallo Dennis, das war auch mein Gedanke aber da scheint alles zu passen … und dann ist ja der Fehler nur bei paypal und nicht bei stripe etc.

in der Tabelle changed (s_order) allerdings tauchen dezent viele „NULL“ Werte auf, allerdings auch bei anderen Zahlungsanbietern!?

Hmm :thinking:

check auch mal die Spalten ordertime und cleareddate. Das Komische ist ja das passiert beim auslesen der s_order

NULL wird in engine/Shopware/Components/Model/DBAL/Types/DateTimeStringType.php vorher abgefangen…

Ai… mein Fehler… nicht die s_order tabelle… sonder die Tabelle s_order_basket :sweat_smile:

hier die spalte „datum“ checken

1 „Gefällt mir“

das wars tatsächlich … vielen dank für deinen Tipp!
läuft alles wieder einwandfrei …

jetzt muss ich nur rausfinden, was sich veränderte dass es auf einmal nicht mehr funktionierte …

Sind das vllt. besondere produkte die durch ein Plugin in den WK gelegt werden?

nein keine Sonderprodukte … es liegt definitiv an dem Payment Plugin dass scheinbar im update die DB Table „umformatiert“ hat …

Moin @msskft,

also ich kann dir versichern das ein Plugin keine Änderungen an Core-Tabellen vornimmt. Attr-Tabellen ausgenommen, aber diese sind ja auch dazu da.

D.h. deine DB Tabelle hatte den falschen DatenTyp?

Date anstatt DateTime?

hmm…

nun dann würde mich sehr interessieren, wie das zustande kommt!?

Gibt es hier schon weitere Erkenntnisse? Haben seit heute den Fehler urplötzlich auch, am Shop wurde vorher nichts geändert. Der Fehler trat bei 4 Bestellern mit Paypal Express auf.

Message:	Could not convert database value "2022-06-01" to Doctrine Type datetime. Expected format: Y-m-d H:i:s
Time:	2022-06-01T13:49:11.460961+0200
Channel:	core
request:	
{
    "uri": "/PaypalUnifiedV2ExpressCheckout/expressCheckoutFinish/paypalOrderId/*******",
    "method": "GET",
    "query": {
        "module": "frontend",
        "controller": "PaypalUnifiedV2ExpressCheckout",
        "action": "expressCheckoutFinish",
        "paypalOrderId": "*******"
    },
    "post": []
}
session:	No session data available

Callstack:

Doctrine\DBAL\Types\ConversionException: Could not convert database value "2022-06-01" to Doctrine Type datetime. Expected format: Y-m-d H:i:s in /home/shop/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php:64
Stack trace:
#0 /home/shop/engine/Shopware/Components/Model/DBAL/Types/DateTimeStringType.php(67): Doctrine\DBAL\Types\ConversionException::conversionFailedFormat()
#1 /home/shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php(316): Shopware\Components\Model\DBAL\Types\DateTimeStringType->convertToPHPValue()
#2 /home/shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php(331): Doctrine\ORM\Internal\Hydration\AbstractHydrator->gatherRowData()
#3 /home/shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php(162): Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateRowData()
#4 /home/shop/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php(153): Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateAllData()
#5 /home/shop/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(562): Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll()
#6 /home/shop/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php(178): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadAll()
#7 /home/shop/custom/plugins/SwagPaymentPayPalUnified/Components/Services/CartRestoreService.php(49): Doctrine\ORM\EntityRepository->findBy()
#8 /home/shop/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/AbstractPaypalPaymentController.php(193): SwagPaymentPayPalUnified\Components\Services\CartRestoreService->getCartData()
#9 /home/shop/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/PaypalUnifiedV2ExpressCheckout.php(63): SwagPaymentPayPalUnified\Controllers\Frontend\AbstractPaypalPaymentController->handleOrderWithSendOrderNumber()
#10 /home/shop/engine/Library/Enlight/Controller/Action.php(192): Shopware_Controllers_Frontend_PaypalUnifiedV2ExpressCheckout->expressCheckoutFinishAction()
#11 /home/shop/engine/Library/Enlight/Controller/Dispatcher/Default.php(478): Enlight_Controller_Action->dispatch()
#12 /home/shop/engine/Library/Enlight/Controller/Front.php(228): Enlight_Controller_Dispatcher_Default->dispatch()
#13 /home/shop/engine/Shopware/Kernel.php(188): Enlight_Controller_Front->dispatch()
#14 /home/shop/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(102): Shopware\Kernel->handle()
#15 /home/shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(453): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle()
#16 /home/shop/engine/Shopware/Components/HttpCache/AppCache.php(261): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward()
#17 /home/shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(426): Shopware\Components\HttpCache\AppCache->forward()
#18 /home/shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(317): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch()
#19 /home/shop/engine/Shopware/Components/HttpCache/AppCache.php(188): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup()
#20 /home/shop/vendor/symfony/http-kernel/HttpCache/HttpCache.php(192): Shopware\Components\HttpCache\AppCache->lookup()
#21 /home/shop/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle()
#22 /home/shop/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle()
#23 {main}

Das sieht ziemlich identisch zum OP aus. Und auch bei uns ist die Spalte “datum” der s_order_basket vom Typ date (da liegt sogar ein Index drauf). Der Shop wird doch nicht einfach von selbst seine Datenbankstruktur manipulieren?

Hab gerade entdeckt, dass es einen Patch SW-26098 gab, der in 3 Tabellen (s_order_basket, s_order_comparisons und s_order_notes) die Spalte “datum” auf den Typ DATETIME änderte. (class Migrations_Migrations1710). Die Spalte ist aktuell jedoch in allen 3 Tabellen bei uns vom Typ DATE.

Da wir ständig Paypal Express Besteller haben, muss das ja bis gestern noch gestimmt haben, sonst hätten wir den Fehler ja schon vorher gesehen. Was ist hier los? Ich bin gerade etwas irritiert und ratlos, wieso die Tabellen wieder zur alten (fehlerhaften) Struktur zurückgesetzt wurden.

Ich hab jetzt die drei ALTER TABLE Befehle aus dem Patch nochmals durchgeführt, aber würde trotzdem gerne die Ursache kennen.

Danke, Phil

Hallo zusammen,

die Spalte datum aus der s_order_basket Tabelle muss definitiv vom Typ datetime sein.
Wenn dies bei euch nicht der Fall ist und ihr eine Shopware Version größer als 5.7.1 installiert habt, dann ist vermutlich die Migration beim Update nicht ordnungsgemäß durchgelaufen. Dies kann unterschiedliche Ursachen haben.
Wenn ihr das SQL Statement aus der Migration manuell ausführt, sollte es danach wieder rund laufen.

Viele Grüße aus Schöppingen
Michael Telgmann

nun die Lösung steht oben beschrieben. Du musst in der DB die Tabelle s_order_basket auf den Typ „datetime“ ändern.

Danach sollte alles wieder wie gewohnt funktionieren.
Einfach in PHPmyadmin einloggen und die Tabelle dahingehend ändern.

ABER … bitte vorher ein SQL BU anlegen!

Wir sind noch auf 5.6.10. Wundert mich, dass das dann überhaupt die ganze Zeit funktioniert hat, aber wie ich ja bereits geschrieben habe, ist jetzt in allen betroffenen 3 Tabellen umgestellt und wir werden das mal weiter beobachten.

Danke Euch!

LG Phil

ja war bei uns auch so, auf einmal warf es einen Fehler auf … nach der Änderung der DB Table war alles wieder schick …