Zend Framework: Zend_DB Fehler

Ich versuche zu lernen, ZF, bekam aber seltsamer Fehler nach 20 Minuten 🙂

Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'Configuration array must have a key for 'dbname' that names the database instance'

Was hat dieser Fehler zu bedeuten? Ich habe DB-information in meiner config-Datei:

resources.db.adapter=pdo_mysql
resources.db.host=localhost
resources.db.username=name
resources.db.password=pass
resources.db.dbname=name

Irgendwelche Vorschläge?

EDIT:

Dies ist meine Modell-Datei /app/models/DbTable/Bands.php:

class Model_DbTable_Bands extends Zend_Db_Table_Abstract
{
    protected $_name = 'zend_bands';
}

Index-controller-action:

public function indexAction()
{
    $albums = new Model_DbTable_Bands();
    $this->view->albums = $albums->fetchAll();
}

BEARBEITEN
Alle codes:

bootstrap.php

protected function _initAutoload()
{
    $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath'  => dirname(__FILE__),
    ));
    return $autoloader;
}

protected function _initDoctype()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('XHTML1_STRICT');
}

public static function setupDatabase()
{
    $config = self::$registry->configuration;
    $db = Zend_Db::factory($config->db);
    $db->query("SET NAMES 'utf8'"); 
    self::$registry->database = $db;
    Zend_Db_Table::setDefaultAdapter($db);
        Zend_Db_Table_Abstract::setDefaultAdapter($db);
}

IndexController.php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $albums = new Model_DbTable_Bands();
        $this->view->albums = $albums->fetchAll();
    }
}

configs/application.ini, Datenbank geändert und bereitgestellt Passwort:

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
db.adapter = PDO_MYSQL
db.params.host = localhost
db.params.username = root
db.params.password = pedro
db.params.dbname = test

models/DbTable/Bands.php

class Model_DbTable_Bands extends Zend_Db_Table_Abstract
{
    protected $_name = 'cakephp_bands';

    public function getAlbum($id) 
    {
        $id = (int)$id;
        $row = $this->fetchRow('id = ' . $id);
        if (!$row) {
            throw new Exception("Count not find row $id");
        }
        return $row->toArray();    
    }
}
Kann man den code, wo Sie instanziieren der db-adapter? Der code vor und einschließlich Zend_Db::factory( /* your config settings */ ) (vermute ich)
Hier sind Sie, Funktion 🙂 public static function setupDatabase() { $config = self::$registry->Konfiguration; $db = Zend_Db::factory($config->db->adapter $config->db->toArray()); $db->query("SET NAMES 'utf8'"); self::$registry->database = $db; Zend_Db_Table::setDefaultAdapter($db); } PS ich weiß nicht, wie zu zählen-code im Kommentar, wer kann es lösen?
Darüber hinaus ist die config-Infos, die Sie zeigen, ist die wörtliche info? Wenn dem so ist, ich glaube nicht, dass der name Ihrer Datenbank ist name ist es? Ändern, zu vertreten, den Namen Ihrer Datenbank. (zusammen mit Benutzername und Kennwort für die Anmeldeinformationen natürlich)
Der code sieht ok aus. Siehe meine vorherigen Annahmen. (Benutze backticks ` code für Kommentare.)
Das ist mein test-server db-name ist zend, Benutzername ist root ohne Passwort. Habe keine Ahnung, was falsch sein könnte mit ihm. Irgendwelche Ideen?

InformationsquelleAutor Sergio E. | 2010-01-25

Schreibe einen Kommentar