The migration froze. A new column was missing from the table, and no one could trace when it was lost.
Adding a new column should be simple. It often isn’t. The process touches schema design, migrations, indexes, and application code. If one step is wrong, you get broken deployments, locked tables, or corrupted data.
A new column in SQL starts with an ALTER TABLE statement. Even here, differences between PostgreSQL, MySQL, and SQLite can cause unexpected results. Some databases block writes while adding a column without a default. Others require a table rewrite that can take minutes or hours on large datasets.
Plan the change. Decide if the new column will be nullable. If not, supply a safe default. Avoid costly full-table locks. In PostgreSQL, adding a nullable column with no default is instant. Setting a default later with ALTER TABLE ... SET DEFAULT avoids rewriting all rows. For MySQL, be aware of storage engines; InnoDB behaves differently from MyISAM.