The logs showed nothing unusual. Then someone noticed the new column.
Adding a new column to a database table sounds simple. It often isn’t. Schema changes can cascade through systems—ORMs, services, migrations, APIs. An unplanned column can break serialization, distort indexes, or trigger unexpected writes. Production stability depends on doing it right every time.
First, define the column with explicit types. Avoid nullable unless necessary. Know how your database engine stores and queries that type. For numeric columns, choose precision and scale with care. For strings, use length limits to prevent storage bloat.
Second, plan the migration path. In PostgreSQL, adding a new column with a default value can lock the table longer than expected. In MySQL, depending on the engine version, it can be instant or require table rebuild. Use a zero-downtime migration strategy. Write forward and backward migrations so rollback is safe.