Здравствуйте! Подскажите, пожалуйста, как должна работать миграция в данном случае:
Есть миграция которая добавляет три текстовых значений: test1, test2, test3 в таблицу items.
На начало миграции в таблице только 1 запись.
Запускаю миграцию, в таблице items уже используется запись test1, как я понимаю добавились только test2, test3.
После миграции в таблице уже 3 записи, всё ок.
Теперь делаю реверт, в миграции описано удалить test1, test2, test3(те поля которые и добавлялись).
Миграция проходит и в базе теперь 0 записей.
Это правильно отработало или как нужно делать, подскажите, пожалуйста.
Откат должен откатить ровно то, что накатил.
Если вы добавили только test2 и test3, то должны удалить только их
Соответственно если в предыдущих миграциях было такое поведение, что появилось в их результате test1, то откат должен привести к тому, что test1 должна остаться.
Опять же -- если вы с нуля накатываете, если вы миграции катите на состояние, которое не дропается, то понятное дело -- играйтесь там так, как ситуация диктует. Но делайте с максимальным соблюдением атомарности "что нанесли, то при откате и должно убраться".
Вообще ситцаций разных много и бывают случае, когда в миграции удаляется 2-3 таблицы или колонки... Понятное дело, что при откате данные не появятся из ниоткуда -- нужно или позаботиться о них или как-то иначе делать