The migration had failed, but the schema was still live. One broken query, and the alert flood began. The fix was simple: add a new column. The stakes were not.
When you add a new column in production, you change more than the table definition. You alter query plans, memory use, and replication lag. In PostgreSQL, ALTER TABLE ADD COLUMN is fast if the column has no default. With a default or NOT NULL, it can lock writes and rewrite the table. In MySQL, adding a column may trigger a full table copy unless you use ALGORITHM=INPLACE or ALGORITHM=INSTANT where supported.
Every database handles a new column differently. The choice between nullable and non-nullable shapes performance and availability. Adding a computed column relies on deterministic expressions. Renaming or dropping the column later has cascading effects on views, stored procedures, and application code.