Schema migrations are the most dangerous code you ship. They run once, cannot be rolled back trivially, and affect every query in your application. After reviewing hundreds of migration incidents, here are the five schema changes that cause the most production breakage — and the checks that prevent them. 🔴 #1: Dropping a Column Still Referenced by Application Code Why it breaks: Your migration runs successfully. The column is gone. Then a background job, API endpoint, or reporting query tries to read it — and crashes. Real-world story: A team dropped legacy_user_id after migrating to UUIDs. The migration passed CI. Two hours later, a nightly ETL job failed because it still selected that column. The rollback required restoring from backup. How to catch it: Search your entire codebase for the column name before dropping. Include background jobs, cron scripts, analytics pipelines, and third-party integrations.…