Yii2未能实例化组件或类;db";
我使用Yii2控制台应用程序来运行迁移。这是一个非常基本的应用程序,如下所示(项目/文件夹中的yii.php): 一切都很好,但当我跑的时候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
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