Nette 2.4: chyba s Nette Database v souvislosti s obnovou cache
- Kcko
- Člen | 468
Po několika hodinách analýzy kódu a simulací na webu, jsem zjistil, že se mi děje poněkud zvláštní chování.
Pokud je web zakešovaný a já provedu insert do DB, tak se provedou
očekávané dotazy
viz obrázek https://bit.ly/2XybGyX
<?php
$order = $this->order->save($data);
//což je
public function save($data)
{
$row = $this->database
->table('order')
->insert($data);
return $row;
}
?>
Pokud ovšem smažu keš (ručně) nebo se maže v nějaké periodě a to
způsobuje právě ty nahodilé „výpadky“ co mi hlásí klient, kdy
dochází ke špatnému insertu nebo updatu nebo vrácení hodnoty, která je
potřeba pro další insert / update
tak jsem si všiml, že se provádí tato sada https://bit.ly/3dEbmV2 a výsledkem je tedy to, že mi insert
sice uloží data (v tomto případě, v jiném nemusí), ale nedokáže mi je
už vrátit, viz poslední řádek ve videu, LAST INSERT ID je 0, díky tomu
mám narušenou konzistenci dat; porušené vazby a aplikace mi vůbec
nefunguje.
Neví někdo co je to za chybu? Problém s Nette database; nějaký bug, nebo dělám něco blbě (moc se mie nezdá teda).
EDIT: Našel jsem tento topic → https://forum.nette.org/…vnullstorage
, který se zdá, že to řeší. Já ale DEV NULL storage nepoužívám.
A proč je to až v 3.x verzi a ne alespoň ve 2.4 když je stále je mi
záhadou.
Editoval Kcko (5. 6. 2020 0:49)
- Pavel Kravčík
- Člen | 1196
@Kcko: Předpokládám, že to bude tím, že podpora Nette 2.4 (2016) skončila, proto se to neopravuje zpětně – viz kompabilita.
Tohle je nemilá situace, protože před supportem se déle čekalo na v3 a většina projektů stále běží na 2.4 a asi ještě dlouho bude.
Možná poprosit @DavidGrudl a pochválit mu dnešní oblečení nebo něco co ho obměkčí jestli by neudělal výjimku. ;)
Radu od Matěje Kmínka bych možná rozšířil – udělat si vlastní fork klidně privátní a nechat ho dojet v projektech s 2.4 – stejně už nic nového do 2.4 pravděpodobně nepřibude.
Editoval Pavel Kravčík (5. 6. 2020 8:28)
- David Matějka
- Moderator | 6445
související issue: https://github.com/…e/issues/216 a PR: https://github.com/…ase/pull/217
hotfixem by mohlo být zavolání (asi) toho getPrimaryAutoincrementKey před samotným insertem
- David Grudl
- Nette Core | 8227
Ono to v 2.4-dev opravené je, takže
"nette/database": "v2.4.x-dev"
by měla fungovat.
- Marek Bartoš
- Nette Blogger | 1274
Zeptám se postfix dev znamená co?
Stáhne i unstable verzi, bez tagu. V tomhle případě poslední commit z větve, která má definovaný v composer.json branch alias 2.4-dev
https://getcomposer.org/…s/aliases.md#…
{
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
}
}
}
Editoval Mabar (9. 6. 2020 11:07)
- Kcko
- Člen | 468
Mabar napsal(a):
Zeptám se postfix dev znamená co?
Stáhne i unstable verzi, bez tagu. V tomhle případě poslední commit z větve, která má definovaný v composer.json branch alias 2.4-dev
https://getcomposer.org/…s/aliases.md#…
{ "extra": { "branch-alias": { "dev-master": "2.4-dev" } } }
Děkuju za vysvětlení.