一、说明
- yii1连接多个数据库,报错 Object configuration must be an array containing a “class” element.
没有配置 class 元素
二、解决
- 配置如下
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=test',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'tablePrefix'=>'cp_'
),
'db2'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=gmipost_dev',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'tablePrefix'=>'gmi_'
),
- 第二个数据库配置之后,在db2中的model里写一个函数getDbConnection,如下:
public function getDbConnection()
{
return Yii::app()->db2;
}
-
该数据库可以用
Yii::app()->db2
访问,我们直接调用model()方法就行,它会自动调用getDbConnection方法,这样就可以访问多个数据库。 -
同理,如果一个是
mysql
,另一个是sqllite
或mssql
,这样做也是可以的。 -
要注意的是第二个配置需要加上
'class'=>'CDbConnection'
,否则就会报错:Object configuration must be an array containing a “class” element