migration status
The database stores a marker, a row that says which version of your contract it currently matches. migration status compares that marker with a target version and lists the migrations in between. The target is the contract you last ran contract emit on, unless --to names another.
Use it before and after db migrate, and when debugging why an environment is not at the expected contract state.
bunx prisma migration status --db "$DATABASE_URL"pnpm prisma migration status --db "$DATABASE_URL"yarn prisma migration status --db "$DATABASE_URL"npx prisma migration status --db "$DATABASE_URL"| Option | What it does |
|---|---|
--db <url> |
Connects to the database. |
--space <id> |
Narrows output to a single contract space. |
--to <contract> |
Sets the target contract reference (hash, prefix, ref name, migration directory name, <dir>^, or ./path). |
--from <contract> |
Sets the origin contract reference. With --from, the command computes the path offline and does not need a database. |
--legend |
Prints a key for the tree glyphs and lane colors. |
--ascii |
Uses ASCII glyphs (pipe-friendly). |
--config <path> |
Read this config file instead of ./prisma.config.ts. |
--json |
Prints a machine-readable result. |
bunx prisma migration status --db "$DATABASE_URL"
bunx prisma migration status --to production
bunx prisma migration status --from abc123 --to production
bunx prisma migration status --asciipnpm prisma migration status --db "$DATABASE_URL"
pnpm prisma migration status --to production
pnpm prisma migration status --from abc123 --to production
pnpm prisma migration status --asciiyarn prisma migration status --db "$DATABASE_URL"
yarn prisma migration status --to production
yarn prisma migration status --from abc123 --to production
yarn prisma migration status --asciinpx prisma migration status --db "$DATABASE_URL"
npx prisma migration status --to production
npx prisma migration status --from abc123 --to production
npx prisma migration status --asciiWith --db, status reads the marker from the database and compares it with the target. With --from, it starts from the state you name instead and needs no database.
With --json, the command prints one "kind": "result" line. Inside its envelope:
result.summaryis the sentence the human output ends with, such asUp to dateor a count of pending migrations.result.spaces[].migrations[]lists each migration on disk with astatus:pending(on the way to the target, not yet applied),applied(on the way to the target, already applied), ornull(not on the way to the target).diagnostics[], besideresultrather than inside it, lists each problem found. Each entry has acode, for exampleMIGRATION.MARKER_NOT_IN_HISTORY, asummary, and aseverity, which this command always sets towarn.
The exit code is 0 even when diagnostics is not empty. A non-zero exit code means the command itself failed, for example with MIGRATION.REF_NOT_FOUND when --to names a ref that does not exist.
The migration group has three more read-only views: migration graph draws the chain of migrations, migration log lists what has run, and migration list lists the migrations on disk. Run each with --help for details.
Use db verify after applying migrations to check the final database shape against the emitted contract.