Dibi is not connected to database
- Manny7
- Člen | 67
Ahoj,
procházím postupně jednotlivé kroky QSu a v tomto
díle jsem narazil na problém, který vystihuje předmět tohoto topicu.
Do bootstrapu jsem dal následující kód (úplně na konec):
dibi::connect(Environment::getConfig('database'));
A dostanu tu error hlášku z předmětu.
Někde na foru jsem tady viděl příspěvek, ve kterém byla radu zkusit do bootstrapu vložit:
dibi::connect($config['database']));
Ale tohle bohužel způsobí, že budu mít jen bílou stránku.
[Soubory: v app/models/ mám Todo.php a TodoManager.php]
Předěm děkuji za jakékoli pošťouchbutí dopředu.
- Blizzy
- Člen | 149
Neznám sice moc Quick start, ale napadá mě, kde by mohl být problém.
Pokud jsi řádek přidal až na konec bootstrapu, tj. za
application->run
, tak se nejdřív spustí aplikace, a poté,
až skončí, tak se teprve připojíš k databázi. To by vysvětlovalo to
hlášku ‚Dibi is not connected to database.‘, která vyskočí někdy
během aplikace, a dibi ještě není připojené.
Pokud je to tento problém, řešení je jasné, připojit se dřív, než se
dibi poprvé použije, například dát ten řádek před
$application->run
.
Já osobně se připojuji přidáním callbacku do události onStartup aplikace tak, jak je popsáno v tutoriálu Návštěvní kniha využívající AJAX. Ale tohle řešení bych nedoporučoval, pokud nerozumíš událostem, zkrátka vhodné až pro pokročilejší uživatele.
Editoval Blizzy (24. 7. 2010 20:21)
- Manny7
- Člen | 67
@redhead: ahoj, jméno db mám uvedeno (níže jsem uvedl to, co mám v config.ini – ujišťuju, že přihlašovací údaje k databázi jsou platné)
[production < common]
database.driver = mysql
database.database = jmeno_db
database.charset = utf8
database.lazy = TRUE
database.host = localhost
database.username = root
database.password = heslo
[development < common]
; database options in development mode
database.profiler = TRUE
database.username = root
database.password = heslo
- Manny7
- Člen | 67
tak přidal jsem „database.database = jmeno_db“ i do části „[development < common]“ a už to jede… ale mám rozhozenou češtinu… přidal jsem teda do te spodní části i „database.charset = utf8“… no a tak mě napadá… k čemu jsou tyto dvě hlavní části v configu? [zatím jsem se to nikde nedočetl]
- redhead
- Člen | 1313
Když to sjednotíš všechno do [common] a v [development < common] necháš třeba jen ten profiler, tak nebudeš mít redundantní údaje.
Jinak to rozdělení je kvůli tomu, co chceš aby bylo pouze v development nebo pouze v production módu (třeba jiné přihlašovací údaje pro dev jiné pro production). Pokud je něco společné, dej to do common (jinak [neco < common] znamená, že neco dědí od common)
Editoval redhead (25. 7. 2010 1:27)