Yii2 无法实例化组件或类 "db"

标签 yii2 migration

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

<?php

    require __DIR__ . '/vendor/autoload.php';
    require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
    $config = require __DIR__ . '/config/console.php';

    (new yii\console\Application($config))->run();

?>

所以当我跑
php yii.php

一切都很好,但是当我运行时
php yii.php migrate/create create_user_table

我收到一条错误消息:
Error: Failed to instantiate component or class "db".

我的 Yii 是 v2.0.15.1

更新 19:32 30/12/2018
当我将 db 配置添加到 config/console.php 时,如下所示:
    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

最佳答案

您缺少控制台应用程序的数据库组件配置,您需要在 config/console.php 中添加以下内容文件。当您使用 basic-app对于 Yii2,你必须有一个 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文件夹,更改 username 的值, passworddbname .
<?php

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

或者您可以在 config/console.php 中分配它如果您不想创建单独的文件
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',
        ]
    ]
];

关于Yii2 无法实例化组件或类 "db",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53978005/

相关文章:

php - Yii2 在运行时设置数据库连接

php - Yii2 ActiveQuery 一列不等于另一列

php - 以 Yii2 形式更改场景

entity-framework - CI 构建服务器上的 EF 迁移

python - Django - South - 有没有办法查看它运行的 SQL?

javascript - Internet Explorer 不会重定向 ajax 响应

crud - 使用 CRUD 生成器时 Yii2 "Page not found"

jquery - 网址已添加到按钮

postgresql - 如何将我的 Rails 数据类型更改为 PostGres bigint?

svn - 从 Windows 上的 VisualSVN 迁移到基于 linux 的 svn