The fix was simple. The cost in downtime was not.
Adding a new column sounds trivial. In production, under live load, it is not. Schema changes can lock tables. They can block writes. They can cascade into failures across dependent services. If a single ALTER statement goes wrong, it can halt transactions, trigger rollbacks, and push error logs to the breaking point.
The right process for adding a new column starts before you run the command. Identify indexes and constraints. Check the nullability. Decide on a default value. Understand how your ORM will handle it. Never assume the migration tool will optimize for speed or concurrency.
In PostgreSQL, ALTER TABLE ADD COLUMN with a default value can rewrite the entire table in an older version. On large datasets, that means minutes or hours of locks. In MySQL, adding columns to InnoDB tables historically required full table rebuilds. Modern versions with ALGORITHM=INSTANT avoid that, but only for certain column types and positions.