【问题标题】:I want to connect YII framework with two databases but it throws CDbConnection failed Incorrect database name我想将 YII 框架与两个数据库连接,但它抛出 CDbConnection failed Incorrect database name
【发布时间】:2016-01-08 06:12:50
【问题描述】:

我用this教程连接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版本的问题

【问题讨论】:

  • 仔细检查您的数据库名称。
  • 你可以使用 self::$db2 = Yii::app()->db2
  • @InsaneSkull 我已经检查了一遍又一遍
  • 您提供的代码中没有“db_name”。源代码和错误消息是否与您在系统中粘贴的方式完全相同。
  • 请从远处看...因为你看的越近你看到的越少。它就在那里。

标签: php mysql database yii yii1.x


【解决方案1】:

在您的连接字符串上,行尾有一个额外的空格(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'
    ),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2016-06-03
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多