mysql - Zend数据库连接失败

标签 mysql zend-framework database-connection

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

Message: No database adapter present

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

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

谢谢!

引导代码:

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();

最佳答案

将数据库定义为资源

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

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

关于mysql - Zend数据库连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785893/

相关文章:

mysql - 无法检索月初之前的记录 - Mysql

php - 如果在检查数据库中的所有表后存在表中的列,如何修改该列?

php - 我如何定制 Zend_Tool 以提供我自己的框架/模板?

php - 我应该如何使用 Zend Framework 创建我的 HTML5 Manifest?

数据库和连接

.net - 超过 100 个连接到 sql server 2008 处于 "sleeping"状态

javascript - js,mysql,php - 通过 while 循环获取 ajax 请求中的特定结果

mysql - 使用 include 时 Sequelize 查询仅返回一行

zend-framework - 如何在 Zend_Form::isValid() 方法中获取表单元素值?

sql-server-2008 - 远程访问sql server的安全风险?