The build was failing, and the logs showed why: a new column had been added, but the migration hadn’t run in staging. One missing step, and the whole pipeline stalled.
Adding a new column is simple. Doing it without breaking production is not. Schema changes touch live data, and every mistake becomes a ticket, an incident, or a rollback. The safest way is to plan each step: create the column in a non-breaking release, backfill data, update application logic, and finally enforce constraints.
In modern databases like PostgreSQL, adding a new column with a default value can lock the table. That means blocked writes, rising latency, and angry users. To avoid it, add the column without a default, then backfill in small batches. After that, set the default for new rows. For MySQL, the same rules apply, but check engine type—InnoDB handles alters faster than MyISAM.