2015-07-28 186 views
2

我第一次使用yii2,我想尝试yii迁移。 问题: 我创建迁移文件,Yii2迁移问题

php yii migrate/create new_table

文件被创建。然后我将新的表格细节输入到迁移文件中。 当我运行php yii migrate 我有错误

Exception 'ReflectionException' with message 'Class db does not exist'
in /var/www/yii2.uz/vendor/yiisoft/yii2/di/Container.php:415
什么问题?

console/config/main.php

<?php 
$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'), 
    require(__DIR__ . '/../../common/config/params-local.php'), 
    require(__DIR__ . '/../../common/config/main-local.php'), 
    require(__DIR__ . '/params.php'), 
    require(__DIR__ . '/params-local.php') 
    ); 
    return [ 
    'id' => 'app-console', 
    'basePath' => dirname(__DIR__), 
    'bootstrap' => ['log'], 
    'controllerNamespace' => 'console\controllers', 
    'components' => [ 
     'log' => [ 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
    ], 
    'params' => $params, 
    ]; 

和我的移民文件:

<?php use yii\db\Schema; 
     use yii\db\Migration; 

     class m150727_125205_new_table extends Migration 
     { 
     public function up() 
     { 
     $this->createTable('test',[ 
      'id'=> Schema::TYPE_PK, 
      'name'=> Schema::TYPE_STRING 
     ]); 
    } 

    public function down() 
    { 
     echo "m150727_125205_new_table cannot be reverted.\n"; 

     return false; 
    } 
+0

请添加创建的迁移内容和控制台配置。 – arogachev

回答

4

DB组件设置控制台丢失,将它添加到console/config/main-local.php文件为地方发展:

'components' => [ 
    'db' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=localhost;dbname=dbname', 
     'username' => 'username', 
     'password' => 'password', 
     'charset' => 'utf8', 
    ], 
], 

对于生产服务器,根据数据库设置更正此文件。

请注意-local文件在.gitignore列表中。

+0

同样的错误,请帮忙 – Faradox

+0

@Faradox检查你写的所有参数是否正确。 –

0

如果您使用的是先进的应用程序,你应该对环境的/ dev /普通/主local.php下面的代码下把你的应用程序申报“DB”组件

'components' => [ 
'db' => [ 
    'class' => 'yii\db\Connection', 
    'dsn' => 'mysql:host=localhost;dbname=dbname', 
    'username' => 'username', 
    'password' => 'password', 
    'charset' => 'utf8', 
], 

] ,

如果您希望配置实际应用于高级模板中的应用程序,您应该运行./yii init或php yii init命令。

如果你使用的是基本应用程序,你应该直接将它放在common/main-local.php文件中。

重要的是将其置于通用控制台之下,而不仅仅是控制台,因为您可能会使用控制台和Web应用程序中的相同数据库。