Если облажаться со скриптом миграции (а у меня такое бывало), то хотя бы можно сделать выборку из базы по всем записям с одинаковым значением поля
updated_at, чтобы начать процесс восстановления или отката данных к исходному состоянию и попробовать снова.Вероятность того, что у записей будет точно одинаковый
updated_at, довольно мала, поэтому это простой и универсальный способ, который работает со всеми моделями.Конечно, можно использовать механизмы защиты, такие как транзакции в БД, но это не панацея, если не выбрасывается исключение, транзакция не откатывается. Кроме того, таблица может быть слишком большой или слишком активно использоваться, чтобы пытаться заблокировать её целиком.
Полезно заранее продумывать худший сценарий и быть к нему готовым, когда приходится работать с продакшен-базами - на всякий случай
👉 @PHPgx
