Source code Releases Stability Security & compliance

Destructive migration without shim

Part of the Production readiness check · fix arrives as a guide

What it is

A migration drops or renames a column or table that the currently deployed code still reads, with no intermediate compatibility step.

Why it matters

During a rolling deploy both versions run at once. The old instances query a column that no longer exists, so a portion of traffic errors for the length of the rollout — and a rollback lands on a schema that cannot serve the old code.

How to fix it

Use expand-contract: add the new shape, backfill, deploy code that writes both and reads the new one, and only drop the old column in a later release once nothing references it.

Run them all on your app

Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.