Nette\Database – vypnutí cache v config.neon

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
enlilcz
Člen | 7
+
0
-

Dá se nějak vytvořit přes config.neon připojení k DB bez cache?
Chci ji vypnout, protože Nette\Database je opět zabugované.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Mohlo by v configu pomoci:

services:
	nette.database.default:
		setup:
			- setCacheStorage( NULL )

Místo default případně odpovídající název připojení.

Editoval vojtech.dobes (10. 5. 2012 15:37)

jtousek
Člen | 951
+
0
-

Zkoušels nejnovější dev z GitHubu? Pokud ano, co je to za bug(y)?

enlilcz
Člen | 7
+
0
-

Nejnovější dev jsem nezkoušel, ale teď třeba na pgsql když udělám TableSelection a zavolám nad tím order(„id“) tak si zakešuje že selectnul id a když potom zavolám další TableSelection tak už mi vrátí jen ten jeden sloupec a ActiveRow se tváří, že v tabulce je jen sloupec id. Po smazání keše to projde zas jen do klauzule order().

Edit: mám verzi 2.0.3

Editoval enlilcz (10. 5. 2012 17:03)

enlilcz
Člen | 7
+
0
-

vojtech.dobes: tak tohle bohužel nefunguje

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Too bad… na čerstvém sandboxu mi to funguje.

Filip Procházka
Moderator | 4668
+
0
-

enlilcz napsal(a):

vojtech.dobes: tak tohle bohužel nefunguje

Bohužel jsi nenapsal, co to generuje do containeru v tempu a jestli to něco hlásí, takže ti nemůžeme poradit, co máš upravit.

Ale střelím od boku, voláš ty metody nad stejným objektem? nebo si vytváříš nový Table\Selection ?

enlilcz
Člen | 7
+
0
-

Ad1: to se týkalo toho bugreportu.

Ale hlavní průšvih je, že nelze zapsat do configu, aby vytvořil DB spojení bez Cache.

llook
Člen | 407
+
0
-

Ale hlavní průšvih je, že nelze zapsat do configu, aby vytvořil DB spojení bez Cache.

Taky jsem teď v 2.0.8 narazil na problém, který se nejsnáz vyřešil vypnutím cache (asi to byl bug, ale nechce se mi v tom víc vrtat). Dá se použít DevNullStorage:

services:
    nette.database.default:
        setup:
            - setCacheStorage( Nette\Caching\Storages\DevNullStorage() )
TrubiT
Člen | 10
+
0
-

llook napsal(a):

Ale hlavní průšvih je, že nelze zapsat do configu, aby vytvořil DB spojení bez Cache.

Taky jsem teď v 2.0.8 narazil na problém, který se nejsnáz vyřešil vypnutím cache (asi to byl bug, ale nechce se mi v tom víc vrtat). Dá se použít DevNullStorage:

services:
    nette.database.default:
        setup:
            - setCacheStorage( Nette\Caching\Storages\DevNullStorage() )

Suprové, to se mi taky hodilo. Rozhodl jsem se používat Nette\Database, ale zatím s tím mám jen problémy. Poslední problém jsem musel řešit tímto způsobem.
Upřímě začínám pochybovat o celé efektivitě tady těch nástrojů. Když jsem používal dibi a psal jsem si všechny dotazy ručně, tak jsem měl jistotu, že dotaz bude rychlý a bude jich jen tolik, kolik chci. Dotazy fungovali napoprvé a bez chyb. Za hodinu ztracenou řešením chyb tady s tím, bych napsal dalších 50 dotazů v dibi. Dávám tomu pořád šanci, asi to má dětské nemoci a já s tím nemám příliš velké zkušenosti, nicméně mě to zatím nenadchlo :)

Díky za toto řešení

kedrigern
Člen | 102
+
0
-

Jen pro úplnost: Při vývoji (když rychle měním soubory, přepisuji adresáře, měním strukturu DB etc.) se mi také jednou za čas stane, že se DB cache neivaliduje, když je to potřeba a stále hází dotazy ze starší verze.

Např se mi stává, že se:

$connection->table('someTable')->select('*');

interpretuje jako:
SELECT id, name FROM someTable
ale já jsem mezitím změnil DB a chci
SELECT id, name, surname FROM someTable

Nevidím do toho, tak to neřeším. Ale tuto volbu začnu používat. Děkuji moc.

hrach
Člen | 1838
+
0
-

Pokud selectnes data, neprectes z nich nic a selectnes je pak po uloznei cache znovu, tak ano, bude tam jen id, protoze id sloupec byl jediny, ktery se predtim pouzil, a to prosim ne na zaklade toho, ze si podle toho radit, ale podle toho, ze se pouziva jako index asociativniho pole.

$connection->table(‚someTable‘)->select(‚*‘);

by v zadnem pripade nemel hazet dotaz z nacachovanymi sloupci. na 99 % je chyba nekde jinde… u tebe, nevim.

hrach
Člen | 1838
+
0
-

jinak z pristupem: jak vypnu cache, protoze to resi moje problemy, tak to goodluck! v opacnem pripadne ocekavam issue s aspon trochu slusnym popisem chyby – ne stylu – nefunguje to.

enumag
Člen | 2118
+
0
-

Vypnutí cache je řešení možná tak dočasně během vývoje, ale vypínat cache na produkci je jednosměrná cesta do pekel. Zkuste sem hodit alespoň laděnku s tou chybou ať s tím může někdo něco udělat.