Eliminate schema drift · Migratrix
Sign in
Schema drift

Staging should not be a guess

Drift is rarely dramatic. A hotfix applied directly to production, an index added during an incident, a column left behind by a reverted release. Individually harmless, collectively the reason a tested change fails on the way out.

See Compare & Sync

Four ways environments diverge

Out-of-band hotfixes

A production incident is resolved with a direct connection. The fix is correct and never makes it back into the change history or the lower environments.

Partially applied releases

A deployment fails halfway. Some statements committed, some did not, and now the target is in a state no migration file describes.

Environments created by restore

Staging was cloned from a production backup months ago and has been drifting ever since, so it no longer represents either past or present.

Manual performance tuning

A DBA adds an index or changes a constraint to solve a real problem in one environment only. Nothing is wrong, but the environments are no longer comparable.

See the difference, then close it

Object-level schema diff

Compare two environments and see differences across tables, columns, indexes, constraints, and other schema objects, presented as a readable diff instead of two scripts to eyeball side by side.

Dialect-aware generation

Comparison runs between two databases on the same engine, and the scripts it produces are generated for that engine's dialect rather than assembled from generic SQL that then fails on the specifics.

Generated alignment scripts

Produce a script that brings the target in line with the source, ordered so dependent objects are created and dropped in a valid sequence rather than failing partway through.

Row-level data comparison

For reference and configuration tables where contents matter as much as structure, compare selected datasets and review inserted, updated, and deleted rows before syncing.

Migratrix schema comparison showing differences between two environments

Closing the gap is the easy half

Syncing a target fixes today's symptom. Drift stops recurring when out-of-band change stops being the path of least resistance, which is the part most drift tooling leaves to you.

01

Make the governed path faster

If shipping a change through review takes minutes rather than days, the incentive to connect directly to production largely disappears.

02

Remove standing write access

With production read-only by default and edits requiring explicit permission, an out-of-band change becomes a deliberate, logged act rather than a reflex.

03

Compare on a schedule, not after an outage

Run comparison between environments regularly so divergence is caught while it is one column, not after it has accumulated for a quarter.

Find out how far apart you already are

Point Migratrix at two environments you believe match and see what comes back.

Read the docs