Adding a new column sounds simple. It can be simple—if you control it, test it, and deploy it without breaking production. Most failures happen when database schema changes are treated like code changes but without the same rigor.
A new column changes the shape of your data. Any insert, update, or select query that doesn’t account for it can fail. ORM models need updating. Migrations must run in a safe sequence. You must confirm no triggers, stored procedures, or downstream ETL jobs depend on older schemas.
For zero-downtime migrations, add the column in a non-blocking way. In Postgres, avoid adding columns with non-null constraints and default values in one step—they can lock large tables. Instead, add the column as nullable, backfill in batches, and apply constraints later. MySQL and other engines have their own patterns, but the objective is constant: minimize locks, avoid blocking writes, protect reads.