A bad database migration can take down production and lose data. These database migration best practices keep schema changes safe and reversible.
1. Review the DDL before you run it
Never apply a generated migration blind. Read the DDL — it should target your database's exact dialect. Look for destructive operations (dropping columns, tables) and confirm they are intentional. A good tool shows you the script before anything is applied.
2. Snapshot before applying
Take a pre-migration snapshot so you can roll back if something goes wrong. FoxSchema does this automatically before it applies a migration, and records every run in history.
3. Never write to the source of truth by accident
When comparing two databases, make sure your tool only writes to the intended target. FoxSchema never modifies the source — it only writes to the target, and only when you explicitly apply.
4. Use skip-on-error for large migrations
For migrations touching many objects, an all-or-nothing rollback can be painful. A skip-on-error mode continues past any single object that fails and reports what was skipped, so you apply what works and fix the rest deliberately.
5. Verify afterward
Re-run a schema comparison after applying. A clean diff confirms the migration did exactly what you intended — no more, no less.
6. Keep credentials encrypted
Database passwords should be encrypted at rest and never exposed to the browser. Treat the tooling around your migrations with the same care as the migrations themselves.
FoxSchema builds these practices in by default. Download it or read the docs.