Wenn ein EntityManager eine flush
macht und diese Flush eine Ausnahme auslöst. Der Doktrin-Entitätsmanager fängt diese Ausnahme ab und löscht die Arbeitseinheit und mark the connection
als geschlossen und führt dann den Rollback durch (https://github.com/doctrine/doctrine2/blob/v2.5.6/lib/Doctrine/ORM/UnitOfWork.php#L412-L417).Wiederherstellen Doctrine Verbindung nach fehlgeschlagenen Flush
Ich brauche die Verbindung wiederherzustellen, aber da es keine Methode mit ist tut $this->closed = false
in der EntityManager Ich bin verwirrt, wie dies, dass zu behandeln, nachdem ein flush
fehlgeschlagen ich ein anderes Unternehmen flush
kann dies markieren einen bestimmten in der Datenbank zu markieren Aufgabe als fehlgeschlagen! Ich kann auch nicht mehrere Aufgaben ausführen, wenn eine vorherige fehlgeschlagen ist und die andere nicht ausgeführt werden kann, wenn der EntityManager verwendet wird.
TL; DR Was ist die beste Vorgehensweise, um die Verbindung nach einem fehlgeschlagenen Flush wiederherzustellen? Wie ich sehe, ist es nur als geschlossen markiert und immer noch verbunden, aber ich möchte nicht etwas Schmutziges wie Reflection oder einen benutzerdefinierten Entity Manager verwenden, um meine Verbindung wiederherzustellen.
Sie können das sicherlich tun. Wird nicht ein bisschen helfen. Sobald eine Ausnahme ausgelöst wird, kann der Entitätsmanager nicht weiter verwendet werden. Down abgestimmt entsprechend. – Cerad
hi @Cerad Kannst du eine Dokumentation zur Verfügung stellen, die beweist, dass wir getManager nach Exception Throw nicht verwenden können, da ich resetManager in meinem Code und seiner Arbeit verwende, bearbeite ich meine Antwort auf ein kleines Beispiel –
Es ist ein bisschen schwer zu analysieren die ursprüngliche Frage, aber ich bin mir ziemlich sicher, dass er keinen neuen Entity Manager will. Mal sehen, ob er antwortet. – Cerad