0

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

そして、正しい出力が得られました。

他のアイデアはありますか?

4

1 に答える 1

1

デバッグのためにこれを試して、アダプタが期待どおりのものであるかどうかを確認してください...

$model = new ModuleName_Model_ModelName();
Zend_Debug::dump($model->getAdapter()->getConfig());
于 2011-03-05T04:51:56.313 に答える