我第一次使用yii2,我想尝试yii迁移。 问题: 我用
创建了迁移文件 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 :(得分:4)
缺少控制台的数据库组件设置,将其添加到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
列表中。
答案 1 :(得分:0)
如果您正在使用高级应用,则应在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 init
或php yii init
命令。
如果您使用的是基本应用程序,则应直接将其放入common/main-local.php
。
将它置于通用之下非常重要,而不仅仅是控制台,因为您可能会同时使用控制台和Web应用程序中的相同数据库。