Задать вопрос

Почему не сработала транзакция при откате миграции в yii2?

Есть миграция, написана через safeUp()/safeDown().
Выполнил миграцию, решил откатить
public function safeDown()
    {
        $this->dropTable('{{%post_tags}}');
        $this->dropTable('{{%tags}}');
        $this->dropTable('{{%category}}');
        $this->dropTable('{{%post}}');
    }

Получилась ошибочка из-за FK (мой косяк), в итоге в БД остались 2 таблицы (category и post).
И если не ошибаюсь (может быть была и раньше, но вроде бы не было) в таблице migration появилась запись m000000_000000_base с датой 1456394833 (25 февраля)

Что я сделал не так? Или в чем проблема с транзакцией?
  • Вопрос задан
  • 378 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Mylistryx
Если БД MySQL, то там, если мне не изменяет память, не работают транзакции на создание\удаление таблиц. Столкнулся с подобной проблемой при создании таблиц, например:
Создать таблицу А, добавить внешний ключ А к Б. Все это обернуто в safeUp. Если в описании создания ключа Б ошибка, то таблицу А миграция создаст, а на создание ключа вывалит эксепшен. Отредактировав эту миграцию при попытке ее применить повторно будет вылетать эксепшен, что таблица А уже существует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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