[英]I want to connect YII framework with two databases but it throws CDbConnection failed Incorrect database name
我已经使用本教程将 YII 与两个数据库连接
我在protected/config/main.php
添加了一个连接字符串,如下
'db2'=>array(
'connectionString' => 'mysql:host=localhost;port=3306;dbname=db_name ',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'class' => 'CDbConnection'
),
我在下面创建了一个文件
protected/component/AltActiveRecord.php
一个类文件,这个文件中的代码是
`
abstract class AltActiveRecord extends CActiveRecord
{
const BELONGS_TO='CBelongsToRelation';
const HAS_ONE='CHasOneRelation';
const HAS_MANY='CHasManyRelation';
const MANY_MANY='CManyManyRelation';
const STAT='CStatRelation';
public static $db2;
private static $_models=array();
private $_md;
private $_new=false;
private $_attributes=array();
private $_related=array();
private $_c;
private $_pk;
public function getDbConnection()
{
if(self::$db2!==null)
return self::$db2;
else
{
self::$db2 = new CDbConnection();
foreach(Yii::app()->db2 as $key => $value)
self::$db2->$key = $value;
if(self::$db2 instanceof CDbConnection)
{
self::$db2->setActive(true);
return self::$db2;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
}
}
}
`
我创建了一个扩展到这个类的模型,并试图在控制器中创建这个模型的对象。 但它以一个错误结束,它说
CDbConnection failed to open the DB connection: SQLSTATE[HY000] [1102] Incorrect database name "db_name"
我想知道为什么这不起作用。 是和php版本还是yii版本有关
在您的连接字符串中,行尾(在db_name
之后)有一个额外的空格:
'db2'=>array(
'connectionString' => 'mysql:host=localhost;port=3306;dbname=db_name ',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'class' => 'CDbConnection'
),
应该:
'db2'=>array(
'connectionString' => 'mysql:host=localhost;port=3306;dbname=db_name',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'class' => 'CDbConnection'
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.