Проблемы миграции 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;
}
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
.
Если вы используете расширенное приложение, вам следует поместить под 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 файл напрямую.
Это важно чтобы поместить его под общим, а не только консольным, так как вы, вероятно, будете использовать одну и ту же базу данных из консоли и веб-приложений.