Yii2未能实例化组件或类;db";

Yii2未能实例化组件或类;db";,yii2,migration,Yii2,Migration,我使用Yii2控制台应用程序来运行迁移。这是一个非常基本的应用程序,如下所示(项目/文件夹中的yii.php): 一切都很好,但当我跑的时候 php yii.php php yii.php migrate/create create_user_table 我收到一条错误消息: Error: Failed to instantiate component or class "db". 我的Yii是v2.0.15.1 UPD 19:32 2018年12月30日 当我向config/consol

我使用Yii2控制台应用程序来运行迁移。这是一个非常基本的应用程序,如下所示(项目/文件夹中的yii.php):

一切都很好,但当我跑的时候

php yii.php
php yii.php migrate/create create_user_table
我收到一条错误消息:

Error: Failed to instantiate component or class "db".
我的Yii是v2.0.15.1

UPD 19:32 2018年12月30日 当我向config/console.php添加db配置时,如下所示:

    return [
    'id' => 'school-console',
    'basePath' => dirname(__DIR__),
    'db' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'mysql:host=localhost;dbname=school',
              'username' => 'root',
              'password' => 'Taras1love',
              'charset' => 'utf8',
    ]
];
我明白了:

Error: Setting read-only property: yii\console\Application::db

您缺少console应用程序的数据库组件配置,需要在
config/console.php
文件中添加以下内容。当您使用Yii2的
basic应用程序时,您必须有一个
db.php
文件和数据库配置,您需要像下面这样包含它

//this goes on the top of your `console.php` file 
$db = require __DIR__ . '/db.php',

return [
    'id' => 'myapp-console', 
    'basePath' => dirname(__DIR__)
    //add the db component
    'components' => [
        'db' => $db,
    ]
];
您的
db.php
应该如下所示,在
config
文件夹中,更改
用户名
密码
数据库名
的值

<?php

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

我发现,如果我直接从供应商/bin运行yii,我就会遇到这个问题。 如果我转到控制台目录并使用./yii从那里运行它,我没有得到这个错误,并且能够创建迁移

换言之:

cd <project-root>/vendor/bin
yii migrate/create xxx
cd/vendor/bin
yii迁移/创建xxx
不起作用

但是:

cd/控制台
/yii迁移/创建xxx

确实有效

这件事发生在我身上,因为我不小心重命名了我的迁移,它与文件名不匹配

看起来你缺少数据库组件配置。你可以添加你的
config/console.php
文件吗?
return['id'=>'myapp console','basePath'=>dirname(uu DIR_u)]是否解决此问题?当我在centos部署yii时,我也有同样的功能。但是在本地开发中这很好。@t不客气,很高兴它能为您工作。您不会进入任何应用程序
控制台
froneted
来运行迁移,但您留在roo上,即
只是为了运行迁移
return [
    'id' => 'myapp-console', 
    'basePath' => dirname(__DIR__)
    //add the db component
    'components' => [
        'db' => [
           'class' => 'yii\db\Connection',
           'dsn' => 'mysql:host=localhost;dbname=YOUR_DB_NAME',
           'username' => 'DB_USER',
           'password' => 'DB_PASS',
           'charset' => 'utf8',
        ]
    ]
];
cd <project-root>/vendor/bin
yii migrate/create xxx
cd <project-root>/console
./yii migrate/create xxx