Старая версия падает, если миграция уже удалила или переименовала используемый ею столбец. Откат кода не откатывает совместимость схемы; применяют expand–migrate–contract.
Давай порассуждаем логически: какая может быть неправильная миграция базы данных, из-за которой при переключении на старую версию приложения получаем 500 ошибку (например, если в одном деплое одновременно удалили столбец и код, который к нему обращается)? Как этого избежать?
Старая версия падает, если миграция уже удалила или переименовала используемый ею столбец. Откат кода не откатывает совместимость схемы; применяют expand–migrate–contract.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Старая версия падает, если миграция уже удалила или переименовала используемый ею столбец. Откат кода не откатывает совместимость схемы; применяют expand–migrate–contract.
Сначала добавьте новую структуру, сохранив старую. Затем выпустите совместимый код, перенесите данные и переключите чтение/запись. Удаляйте старый столбец только после завершения окна rollback и остановки старых процессов. Проверяйте одновременно web, workers и отложенные задания. Миграция down не всегда безопасно восстанавливает потерянные данные, поэтому нужна стратегия отката, а не только обратный SQL.