Cannot execute queries while other unbuffered queries are active po instalaci Kdyby\Events
- Jan Kotalík
- Člen | 16
Zdravím,
nevím si rady s jednou věcí – nainstaloval jsem Kdyby\Events 2.1.1 na Nette 2.1.* a funguje výborně. :)
Bohužel, na stránkách byl kód, který umožňoval instalaci databáze
(pomocí Nette\Database), který nyní padá na výjimce
Cannot execute queries while other unbuffered queries are active.
Stává se to jen u této instalace databáze, pravděpodobně proto, že využívá transakce, takže se tam děje něco jako:
beginTransaction
delete/insert/update
endTransaction.
Ostatní dotazy na stránkách fungují bez problémů (a bez transakcí).
Podle tohoto příspěvku jsem zkusil fetchnout data, která se mi vrátí z query, ale skončí to na General Erroru.
Co mi nejde do hlavy je to, jaktože to před instalací Kdyby\Events (pomocí composeru) fungovalo.
Patrně to souvisí s tou transakcí, ale neznám Events dost na to, abych dokázal určit, čím by to mohlo být.
Můžete mi prosím dát nějakou radu? :)
- Filip Procházka
- Moderator | 4668
Events rozhodně na databázi nesahají, to děláš ty. Neaktualizovalo se ti náhodou i Nette, když jsi instaloval Kdyby/Events?
Někde jsi začal unbuffered query, načetl z ní pár řádků (jestli vůbec) a pak jsi chtěl vykonávat jinou. Pořádně si to debugni, podle té laděnky se to k vyvolání toho eventu ani nedostane a vsadím se, že to umře hned při druhé query z toho batche.
- Jan Kotalík
- Člen | 16
Tak jsem to zkusil nainstalovat úplně znova na nové větvi. Instaloval jsem pomocí composeru a ta chyba se začala stávat hned potom, co jsem udělal registraci do bootstrapu. Všiml jsem si, že záleží na tom, kam v bootstrap.php dám registraci Extension:
když je to takhle:
$container = $configurator->createContainer();
Kdyby\Events\DI\EventsExtension::register($configurator);
tak nefungují Events (ani se nenačtou ty systémové v debug baru), ale fungují mi dlouhé skripty.
Oproti tomu,
Kdyby\Events\DI\EventsExtension::register($configurator);
$container = $configurator->createContainer();
způsobí, že to vyhazuje výše zmíněnou chybu, ale eventy fungují.
Na config.neon přitom vůbec nezáleží.
- Filip Procházka
- Moderator | 4668
Tak samozřejmě, nemůžeš registrovat Events až potom, co se zkompiluje container, to pak nemá vůbec na nic vliv. Opravil jsem dokumentaci