Ошибка подключения к базе данных Zend - PullRequest
0 голосов
/ 16 октября 2011

Хорошо, у меня есть реальная проблема с этим решить. Я пытаюсь подключиться к базе данных mysql из приложения Zend и получаю следующую ошибку:

Message: No database adapter present

Я проверил и дважды проверил учетные данные подключения, и они должны быть в порядке. Код должен быть в порядке, так как он работает нормально в среде разработки. Если я намеренно изменяю пароль на неправильный в среде разработки, я получаю точно такую ​​же ошибку, которая заставляет меня поверить, что, возможно, это так, несмотря на мою проверку!

Любые мысли приветствуются. Если здесь нет ничего плохого, то, возможно, мне нужно посмотреть настройки сервера / 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();

1 Ответ

1 голос
/ 16 октября 2011

Определите вашу базу данных как ресурс

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

В ваших основных файлах вам ничего не нужно делать, кроме как инициировать запрос, не беспокоясь о назначении базы данных для вашей конфигурации - это делается изнутри, ресурс БД всегда выбирается в качестве адаптера по умолчанию для транзакций вашей базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...