【发布时间】:2018-09-20 05:14:40
【问题描述】:
我的门户使用 Yii 1.1.17。我使用相同的应用程序根据域名连接到不同的数据库。
我在 main.php
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=db',
'emulatePrepare' => TRUE,
'active' => FALSE,
'username' => 'dbUser',
'password' => 'dbP@ssW0rd',
'charset' => 'utf8'
),
然后在 Controller.php 中更改它们,如下所示:
// get database params from url
$url = Yii::app()->request->serverName;
$db_param = explode(".",$url);
$db = Yii::app()->params['db'][$db_param[0]];
Yii::app()->db->setActive(false);
Yii::app()->db->connectionString = mysql:host=127.0.0.1;dbname=$db";
Yii::app()->db->username = $db;
Yii::app()->db->setActive(true);
username 与 dbname 相同,password 对所有数据库都相同。
当我打开门户时,它给了我
CDbException
CDbConnection failed to open the DB connection.
但是当我在 main.php 内的 connectionString 和 username 中写入实时数据库的实际值时,它会打开然后更改这些值并连接到正确的数据库。
我的问题是:
如何防止 Yii 在运行 Controller.php 中的代码之前自动连接。我设置了'active' => FALSE,但是没有用。
【问题讨论】:
-
请尝试设置
'autoConnect' => FALSE,,可能有帮助,更多信息yiiframework.com/doc/api/1.1/CDbConnection#autoConnect-detail -
是的,它有效。谢谢
标签: yii