SQL Exeption... danach trotzdem weiterarbeiten lassen...

Beispiel:

Bei einem Datenabgleich in einer Liste von 100 Produkten ist an 20. stelle ein Produkt, welches eine SQL Exeption produziert… 

Dann kommt es dazu, dass die nächsten Einträge 21 bis 100 zwar versucht wird zu verarbeiten, aber es so ausschaut, als wenn die Danbankverbindung geschlossen wurde… oder was anderes nicht klappt… Was passiert da genau?

 

Beispiel was ich meine, was in der Schleife ist:

$e = '';
$error = 'no';

try {
                
$articleResource->create($minimalTestArticle);

} catch (Exception $e) {
   echo 'Exception: '. $e->getMessage(). "\n";
   $error = 'yes';
}

Wie kann ich den nächsten Eintrag wieder korrekt verabeiten lassen? Was ist zu tun?

Danke vorab für die Hilfe!

Hallo @neofire‍,

ich habe dies nicht getestet, aber probiere mal das EnitityManager clear funktion wie so:

try {
                
   $articleResource->create($minimalTestArticle);

} catch (Exception $e) {
   echo 'Exception: '. $e->getMessage(). "\n";
   $error = 'yes';
   Shopware()->Models()->clear();
}

VG,

Tel.: +49 755 - 183 990 00 | Email: info@enbit.de | Web: http://enbit.de/

Scheint nicht zu klappen… Hat jemand eine Idee?

Sobald ein Fehler passiert, schließt sich der Doctrine EntityManager.

Entweder du benutzst hier ->batch der Artikel Resource, das verhindert solche Probleme. Ansonsten musst du jedes mal prüfen ob der EntityManager offen ist mit ->isOpen().

Wenn dieser zu sein sollte, musst du paar Services zurücksetzen.

https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Components/Api/Resource/Resource.php#L590-L598

Schaut euch mal das Bild an… Es hilft nicht weiter… isOpen ist auch immer true

Der letzte 1081 Eintrag sollte wieder klappen… die davor, die rot sind… die habe ich extra so angepasst, dass es zum Fehler kommt.