Schema drift detection
Your migrations are green. Your schemas still drifted.
Schema drift is the gap between what you think your database looks like and what it actually is. DiffyPick compares two databases and shows exactly what has drifted — then generates the SQL to close the gap.
What schema drift is
Drift is when two databases that should match — local and staging, staging and production — quietly diverge. A column here, an index there, a constraint someone changed by hand.
Migration history tells you what was supposed to happen. It cannot tell you what the database actually looks like now. Only the database can, and DiffyPick reads it directly.
How drift creeps in
The hotfix that never got a migration
A production incident, an ALTER typed straight into the console. It worked — and never made it back into version control.
The shared environment
Five people share a staging database. One day there is a new column, and nobody remembers adding it.
The migration that half-applied
A migration failed midway, or ran in a different order somewhere. The history says done; the schema disagrees.
Manual tweaks and out-of-band tools
GUI changes, ad-hoc scripts, another team touching the same database — none of it shows up in your migration files.
Catch it in five seconds
Point DiffyPick at the two databases and it lists every table, column, index and constraint that differs — color-coded, searchable, one row each.
Review the difference, pick what to apply, and sync. Compare again and "no differences" means you are actually back in sync — not just hoping you are.
Works alongside Flyway and Liquibase
DiffyPick does not replace your migration tool — it answers the question the history alone cannot: did the database actually end up the way the migration intended?
Run your migrations as usual, then compare with DiffyPick to confirm reality matches intent, and to catch the drift that slipped in outside the migration path.
The result: your existing migration files stay healthier over time.
Or run without migrations at all
If your model is your source of truth and you do not need an audited change history, DiffyPick can be your whole schema workflow: build the schema from your model, diff it against the live database, and sync — no migration files to write.
This is the state-based, declarative approach: describe the destination, and let the diff work out the steps.
The trade-off is honest: this fits solo and small-team, state-based workflows. If you need audited history, data backfills and transforms, or CI-driven deterministic deploys, keep your migration tool — DiffyPick is GUI-driven and human-in-the-loop by design.
See what has really drifted.
Free for SQLite, no account and no time limit. Add the other engines when you are ready.