2015-07-28 226 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應用程序中的相同數據庫。