【问题标题】:Can't connect to external database with Zend Framework but mysql_connect works无法使用 Zend 框架连接到外部数据库,但 mysql_connect 有效
【发布时间】:2011-07-09 04:48:37
【问题描述】:

我正在尝试使用 Zend Framework 连接到多个数据库。当我使用与 mysql_connect 相同的凭据进行连接时,它工作得很好。当我与 Zend 连接时,我得到了

"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access 
denied for user 'xxxx'@'localhost' (using password: YES)' in C:\wamp\www\zend\library\Zend\Db\Adapter\Pdo\Abstract.php on line 144"

我在 http://www.amazium.com/blog/using-different-databases-with-zend-framework 学习教程

这是我的 application.ini:

resources.multidb.db1.adapter = "PDO_MYSQL"
resources.multidb.db1.dbname = "xxxxx"
resources.multidb.db1.username = "xxxxxx"
resources.multidb.db1.password = "xxxxxx"
resources.multidb.db1.hostname = "localhost"
resources.multidb.db1.charset = "UTF8"
resources.multidb.db1.default = true

resources.multidb.db3.adapter = "PDO_MYSQL"
resources.multidb.db3.dbname = "xxxxxx"
resources.multidb.db3.username = "xxxxxx"
resources.multidb.db3.password = "xxxxxx"
resources.multidb.db3.hostname = "xxxxx"
resources.multidb.db3.charset = "UTF8"
resources.multidb.db3.default = false

这是我的 Bootstrap.php:

/**
 * Add databases to the registry
 */
public function _initDbRegistry()
{
    $this->bootstrap('multidb');
    $multidb = $this->getPluginResource('multidb');
    Zend_Registry::set('local', $multidb->getDb('db1'));
    Zend_Registry::set('db2', $multidb->getDb('db2'));
    Zend_Registry::set('db3', $multidb->getDb('db3'));
}

这是我的模型:

class ModuleName_Model_ModelName extends Zend_Db_Table_Abstract
{
    protected $_name;
    protected $_schema;
    protected $_db; // changed from $_adapter in tutorial for Zend 1.11

    public function init() 
    {
        $this->_name = 'contacts';
        $this->_schema  = 'xxxxx';
        $this->_db = Zend_Registry::get('db3');
    }
}

这是我在控制器中调用它的地方:

$model = new ModuleName_Model_ModelName();
$this->view->output= $model->fetchAll();

我已通过 phpmyadmin、mysql 工作台连接,并通过复制和粘贴相同的用户名和密码使用普通的旧 mysql_connect。毫无疑问,用户名和密码是正确的。任何人都知道我在 Zend 中做错了什么会引发访问被拒绝错误?

好的,谢谢 - Midhun,我尝试了你的建议:

Zend_Debug::dump($model->getAdapter()->getConfig());

我确实得到了正确的输出。

还有其他想法吗?

【问题讨论】:

  • 当我尝试让 multidb 资源在许多 ZF 版本之前工作时,我放弃并编写了自己的。也就是说,请尝试关注manual's example

标签: mysql zend-framework pdo zend-db mysql-error-1045


【解决方案1】:

试试这个进行调试并检查适配器是否完全符合您的预期......

$model = new ModuleName_Model_ModelName();
Zend_Debug::dump($model->getAdapter()->getConfig());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2011-10-30
    • 1970-01-01
    • 2012-09-17
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多