zend_framework を、さわり初めて3ヶ月くらい・・・。
必要に迫られて、マルチデータベース(multidb)を使うことになったのだが・・・エラーで先に進めない・・・。
“exception ‘PDOException’ with message ‘SQLSTATE[08006] [7] invalid connection option “adapter”‘ in C:\zend\library\Zend\Db\Adapter\Pdo\Abstract.php:130
Stack trace: (以下略…
application.iniには、以下のように設定した。
;データベース1 resources.multidb.db1.adapter = "pdo_pgsql" resources.multidb.db1.host = "localhost" resources.multidb.db1.username = "user" resources.multidb.db1.password = "hogehoge" resources.multidb.db1.dbname = "database1" resources.multidb.db1.default = true ;データベース2 resources.multidb.db2.adapter = "pdo_pgsql" resources.multidb.db2.host = "localhost" resources.multidb.db2.username = "dbuser" resources.multidb.db2.password = "hogehoge" resources.multidb.db2.dbname = "database2"
なぜだ!なぜ動かない!
ということで、Zend Frameworkの中身を見てみることに・・・・。
…/library/Zend/Application/Resource/Multidb.php
の中の 76行目位から・・・
public function init()
{
$options = $this->getOptions();
foreach ($options as $id => $params) {
$this->_dbs[$id] = Zend_Db::factory($params['adapter'], $params);
if ((isset($params['default']) && $params['default'] == true)
// For consistency with the Db Resource Plugin
|| (isset($params['isDefaultTableAdapter'])
&& $params['isDefaultTableAdapter'] == true)
) {
$this->_setDefault($this->_dbs[$id]);
}
}
return $this;
}
ん!?
$this->_dbs[$id] = Zend_Db::factory($params['adapter'], $params);
これ変だ・・・。パラメーター内にadapterを入れておくとエラーになるじゃんか!
・・・・・。汗。
これが解るまでに半日使いましたよ・・・・。
そして、 「2010/04/13現在の最新版」Ver 1.10.3では、修正されてました。
ということで、同じようなお悩みをお持ちだった、そこの貴方!
最新版を使うように心がけましょう。