Dibi – No database selected
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- FilekCZE
- Člen | 7
Čau,
jsem začátečník s nette a chtěl jsem si vytvořit blog podle návodu, ale
vždycky mi to vyhodí chybu
„DibiDriverException #1046
No database selected“
V bootstrap.php mám:
<?php
/**
* My Application bootstrap file.
*/
use Nette\Diagnostics\Debugger,
Nette\Application\Routers\Route,
Nette\Environment,
Nette\Config\Configurator;
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
// Enable Nette Debugger for error visualisation & logging
Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable();
// Configure application
$configurator = new Nette\Config\Configurator;
$configurator->setTempDirectory(__DIR__ . '/../temp');
// Enable RobotLoader - this will load all classes automatically
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
// Opens already started session
if ($container->session->exists()) {
$container->session->start();
}
// Setup router
$router = $container->router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<action>[/<id>]', 'Homepage:default');
// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
dibi::connect(Environment::getConfig('database'));
$application->run();
a v config.neon:
common:
parameters:
database:
driver: mysql
host: localhost
dbname: test
user:
password:
php:
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
services:
database:
class: Nette\Database\Connection(
'%database.driver%:host=%database.host%;dbname=%database.dbname%'
%database.user%
%database.password%
)
setup:
- setCacheStorage(...)
#- setDatabaseReflection( Nette\Database\Reflection\DiscoveredReflection() )
authenticator: Authenticator( @database::table(users) )
factories:
production < common:
development < common:
Vůbec nevím, kde dělám chybu. :/
- Michal Vyšinský
- Člen | 608
Změň název parametru z dbname na database. IMO myslím, že by ty parametry měly mít stejný název, jako je to tady
EDIT: A ještě bys měl změnit v bootstrap.php předání konfigurace připojení – Environment bych nepoužíval.
dibi::connect($container->params["database"]);
Editoval CherryBoss (8. 1. 2012 11:23)
- Michal Vyšinský
- Člen | 608
V těch parametrech pro database službu to taky musíš změnit:
Toto:
'%database.driver%:host=%database.host%;dbname=%database.dbname%'
Změň na toto:
'%database.driver%:host=%database.host%;dbname=%database.database%'
Ale jestli používáš v projektu jen dibi, tak je ta služba „database“ zbytečná.