The migration failed at 03:17. The logs were clean until the point where the database choked on a new column.
Adding a new column sounds simple. It rarely is. Schema changes can lock tables. Locks block writes. Blocked writes block your users. In distributed systems, a single blocking DDL statement can ripple through services faster than alerts can fire.
A new column alters both data and code paths. Before adding one, you need to know how your ORM maps it, how defaults work, how it affects nullability, and whether existing queries will touch it. Even if you think the application will ignore it at first, indexes and constraints can cause surprises.
In relational databases like PostgreSQL and MySQL, ALTER TABLE ADD COLUMN can be safe if used with lightweight types and careful defaults. But adding a column with a non-null constraint and a default value will rewrite the table. That rewrite can lock millions of rows. For live production systems, consider adding the column as nullable, backfilling in controlled batches, then enforcing constraints.