Yii2迁移问题

Yii2 migration problems

我是第一次使用 yii2,我想尝试 yii 迁移。 问题: 我用

创建了迁移文件

php yii migrate/create new_table

文件已创建。然后我将新的 table 详细信息输入到迁移文件中。 当我 运行 php yii migrate 我收到错误

异常 'ReflectionException' 消息 'Class db does not exist'<br> 在 /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;
    }

缺少控制台的数据库组件设置,将其添加到 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 列表中。

如果您使用的是高级应用程序,则应将以下代码放入 environment/dev/common/main-local.php 以在您的应用程序中声明 db 组件:

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

如果你想让配置真正应用到高级模板中的应用程序,你应该运行./yii initphp yii init命令。

如果您使用的是基本应用程序,则应直接将其放入 common/main-local.php

重要的是将它放在公共下,而不仅仅是控制台下,因为您可能会在控制台和 Web 应用程序中使用相同的数据库。