Zend数据库连接失败

时间:2011-10-16 17:08:02

标签: mysql zend-framework database-connection

好的,我真的很难解决这个问题。我正在尝试从zend应用程序连接到mysql数据库,我收到以下错误:

Message: No database adapter present

我已经检查并仔细检查了连接凭据,它们应该没问题。代码也应该没问题,因为它在开发环境中工作正常。如果我故意在开发环境中将密码更改为不正确,我会得到完全相同的错误,这让我相信可能是这种情况,尽管我检查了!

任何想法都会非常受欢迎。如果这里没有明显的错误,那么我可能需要查看server / db / php设置吗?

谢谢!

Bootstrap代码:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initPlaceholders(){
    Zend_Session::start();

    $this->bootstrap('View');
    $view = $this->getResource('View');

    $view->doctype('XHTML1_STRICT');

    // Set the initial stylesheet:
    $view->headLink()->appendStylesheet('/css/global.css');

    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('Pog_');


    Zend_Controller_Action_HelperBroker::addPath(
    APPLICATION_PATH . '/controllers/helpers',
        'Application_Controller_Action_Helper_');

}


}

配置文件:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.view[] =
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.helperPath.View_Helper = APPLICATION_PATH "/views/helpers"
database.adapter         = pdo_mysql
database.params.host     = localhost
database.params.username = user
database.params.password = password
database.params.dbname   = test

数据库连接助手:

/**
 * Constructor: initialize plugin loader
 *
 * @return void
 */
public function __construct()
{
    try{

        $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'production');
        $dbAdapter = Zend_Db::factory($config->database);
        $dbAdapter->getConnection();
        $this->connection = $dbAdapter;
    } catch (Zend_Db_Adapter_Exception $e) {
        echo 'perhaps a failed login credential, or perhaps the RDBMS is not running';
    } catch (Zend_Exception $e) {
        echo 'perhaps factory() failed to load the specified Adapter class';
    }
}
public function getDbConnection(){
    return $this->connection;
}
}

指数:

// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
        ->run();

1 个答案:

答案 0 :(得分:1)

将数据库定义为资源

resources.db.adapter = pdo_mysql
resources.db.params.host = localhost
resources.db.params.username = user
resources.db.params.password = password
resources.db.params.dbname = test

在您的主文件中,您无需执行任何操作,只需启动查询,而无需担心从配置中分配数据库 - 在内部完成,数据库资源始终被选为数据库事务的默认适配器< / p>