Doctrine – Entity manager is closed, reset entity manažeru po chybě
- aliamjid
- Člen | 8
Zdravím,
je způsob jak v rámci doctrine v nette řešit chybu Entity manager is closed?
zjednodušený case:
try {
$this->em->flush($entity); //vyhodí chybu a tím se uzavře entity manager
} catch ($e) {}
$this->em->flush($entity2); //exception - entity manager is closed
V symfony by se toto dalo řešit takto
try {
$this->em->flush($entity); //vyhodí chybu a tím se uzavře entity manager
} catch ($e) {
$this->doctrine->resetEntityManager();
}
$this->em->flush($entity2); //projde
Editoval aliamjid (15. 9. 2022 19:52)
- Daewoo
- Člen | 37
Nejčastější příčinou je, když ti vyhodí queryna chybu na úrovni databáze. Entity manager se uzavře a všechny následné pokusy ho používat spadnou do této chyby. Refresh ani clear nepomůžou, není k dispozici metoda, která by připojení znovuotevřela. Řešením je tedy v logu najít první chybu od Doctriny a tu opravit. Někdy to může být chyba syntaxe, někdy constraints chyba, jindy zase chyba při provádění async operací atd.
Symfony/Doctrina na to má metodu resetManager, ale ta v Nette/Nettrine neexistuje – nevím, jak manager tady reinicializovat.
Editoval Daewoo (2. 12. 21:46)