The reason was clear: a missing new column. Adding a new column may look simple, but in production systems it can break performance, lock tables, and block deploys. Precision matters.
A new column alters the physical structure of a database table. On large datasets, this means the database must rewrite metadata or even the entire table. For PostgreSQL, ALTER TABLE ... ADD COLUMN with a default value can trigger a full table rewrite. MySQL may lock the table depending on storage engine and column definition. In both cases, downtime risk grows with table size.
Plan the new column operation as you would a release. Check whether the schema migration tool supports non-blocking DDL. Avoid defaults that force mass updates. Instead, create the column as nullable, deploy the code that writes to it, backfill in small batches, then set constraints. This staged approach reduces lock times and contention.