@rusline

Почему не срабатывает миграция?

Я вывел первую миграцию, и у меня получилось, когда я захотел связать таблицы, то тут у меня пишет что
No new migrations found. Your system is up-to-date.

Весь код вот одной таблицы
class m170409_113615_transaction extends Migration
{
    public function up()
    {
        $this->createTable('Transaction', [
                'id' => $this->primaryKey(),
                'name' => $this->string(50),
                'category' => $this->integer(),
                'sum' => $this->integer(),
            ]);

        $this->createIndex(
                'inx-transaction_category',
                'Transaction',
                'category'
            );

        $this->addForeignKey(
                'fk_transaction_category',
                'category',
                'id',
                'Transaction',
                'category',
                'CASCADE'
            );
    }

    public function down()
    {
       $this->dropTable('transaction');
    }
}

И второй таблицы
class m170409_113632_category extends Migration
{
    public function up()
    {
        $this->createTable('category',[
                'id' => $this->primaryKey(),
                'name' => $this->string(50),
            ]);
        
    }

    public function down()
    {
       $this->dropTable('category');
    }
}

Не могу понять, как бы она должна работать когда вбиваешь в консоль yii migrate
  • Вопрос задан
  • 1882 просмотра
Решения вопроса 1
padlyuck
@padlyuck
Покажите конфиг консольного приложения и укажите точную версию вашей копии yii. Также неплохо было бы указать какой скелет вы используете(basic or advanced).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Вручную удали уже созданные таблицы и повтори комманду
И связь нужно добавлять с уже созданной таблицей, т.е. Сначала применить вторую миграцию
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
в этом же и смысл миграции, что бы не повторять ту, что уже использовалась. Если надо внести правки, надо писать новую миграцию, а не вносить правки в использованную.
Ответ написан
Комментировать
@PapaStifflera
Родился, вырос...
Миграция m170409_113615_transaction пытается создать foreign key на таблицу, которая не существует на момент исполнения миграции (создается в миграции m170409_113632_category).
MySQL не поддерживает транзакции в DDL и по этому создание всех констреинтов лучше выносить в отдельные миграции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы