是否可以在运行时“刷新”与db的连接?

时间:2014-02-04 11:26:08

标签: php database activerecord yii

这是我的问题。我有一个yii web project,与db中定义的某个main.php有关联:

'db'=>array(
'pdoClass' => 'NestedPDO',  
'connectionString' =>'sqlite:/var/www/my_project/protected/data/runtime/myDb.db',  
'class'            => 'CDbConnection',
'schemaCachingDuration' => 100,  
),

在其中一个php脚本中,我运行一个命令来复制新的database而不是旧的table。 问题是在脚本中我没有注意到变化 例如,如果在数据库“myDb”中有一个名为Table_1的php包含4条记录,而在新的“myDb”中该表包含8条记录,在我运行之后的{{1}}脚本中更改“myDb”的命令我仍然会看到“Table_1”有4条记录。

1 个答案:

答案 0 :(得分:0)

如果你想要的话,Yii可以被配置为运行多个数据库 像这样的东西

...
'components' => array(
   'db'=>array(
      'pdoClass' => 'NestedPDO',  
      'connectionString' =>'sqlite:/var/www/my_project/protected/data/runtime/myDb.db',  
      'class'            => 'CDbConnection',
      'schemaCachingDuration' => 100,  
     ),
   'dbNew' => array(
       'pdoClass' => 'NestedPDO',  
       'connectionString' =>'sqlite:/var/www/my_project/protected/data/runtime/myDb_new.db',  
        'schemaCachingDuration' => 100,  
        'class'            => 'CDbConnection'          // DO NOT FORGET THIS!
    ),
    ...

一旦定义了这个,第二个数据库被称为Yii::app()->dbNew而不是Yii::app()->db,第一个数据库也可用于您的常规操作