Проблемы миграции Yii2


Я впервые использую 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;
    }
Author: Faradox, 2015-07-28

2 answers

Отсутствует настройка компонента БД для консоли, добавьте это в файл 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.

 4
Author: arogachev, 2015-07-28 12:04:49

Если вы используете расширенное приложение, вам следует поместить под environment/dev/common/main-local.php следующий код для объявления компонента "бд" в вашем приложении

'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 файл напрямую.

Это важно чтобы поместить его под общим, а не только консольным, так как вы, вероятно, будете использовать одну и ту же базу данных из консоли и веб-приложений.

 0
Author: Nico Savini, 2015-11-18 12:19:49