# diff

The `prisma migrate diff` command compares two database schema sources and outputs a description of the migration needed to transform the first into the second.

:::callout{intent="note"}
This command is only partially supported for [MongoDB](/guides/core-concepts-v7-supported-databases-mongodb). See options below for details.
:::

## [Usage](#usage)

```
prisma migrate diff --from-... <source1> --to-... <source2>
```

The output can be a human-readable summary (default) or an executable script.

:::callout{intent="warning"}
The `migrate diff` command can only compare database features [supported by Prisma](/guides/reference-6-v7-reference-database-features). Differences in unsupported features (views, triggers, etc.) won't be shown.
:::

## [Prerequisites](#prerequisites)

If using `--from-config-datasource` or `--to-config-datasource`, configure your database connection in `prisma.config.ts`:

```
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}
```

```
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});
```

## [Source types](#source-types)

Both sources must use the same database provider.

### [From options (one required)](#from-options-one-required)

| Option                     | Description                              | Notes                    |
| -------------------------- | ---------------------------------------- | ------------------------ |
| `--from-empty`             | Assume the source is an empty data model |                          |
| `--from-schema`            | Path to a Prisma schema file             |                          |
| `--from-migrations`        | Path to Prisma migrations directory      | Not supported in MongoDB |
| `--from-config-datasource` | Use datasource from Prisma config file   | Prisma v7+               |

### [To options (one required)](#to-options-one-required)

| Option                   | Description                                   | Notes                    |
| ------------------------ | --------------------------------------------- | ------------------------ |
| `--to-empty`             | Assume the destination is an empty data model |                          |
| `--to-schema`            | Path to a Prisma schema file                  |                          |
| `--to-migrations`        | Path to Prisma migrations directory           | Not supported in MongoDB |
| `--to-config-datasource` | Use datasource from Prisma config file        | Prisma v7+               |

### [Other options](#other-options)

| Option           | Description                                              | Notes                       |
| ---------------- | -------------------------------------------------------- | --------------------------- |
| `--config`       | Custom path to your Prisma config file                   |                             |
| `--script`       | Output a SQL script instead of human-readable summary    | Not supported in MongoDB    |
| `-o`, `--output` | Write to a file instead of stdout                        | Available since 5.12.1      |
| `--exit-code`    | Change exit code behavior: Empty=0, Error=1, Not empty=2 | Default: Success=0, Error=1 |
| `--help`         | Display help message                                     |                             |

:::callout{intent="note"}
**Prisma v7 breaking change**: The `--from-url`, `--to-url`, `--from-schema-datasource`, `--to-schema-datasource`, and `--shadow-database-url` options have been removed. Use `--from-config-datasource` and `--to-config-datasource` instead.
:::

## [Examples](#examples)

### [Compare database to schema](#compare-database-to-schema)

Roll forward after a migration failed:

:::code-group
```title="bun"
bunx prisma migrate diff \

  --from-config-datasource \

  --to-schema=next_datamodel.prisma \

  --script
```

```bash title="pnpm"
pnpm prisma migrate diff \
  --from-config-datasource \
  --to-schema=next_datamodel.prisma \
  --script
```

```bash title="yarn"
yarn prisma migrate diff \
  --from-config-datasource \
  --to-schema=next_datamodel.prisma \
  --script
```

```bash title="npm"
npx prisma migrate diff \
  --from-config-datasource \
  --to-schema=next_datamodel.prisma \
  --script
```
:::

### [Compare schema to database](#compare-schema-to-database)

:::code-group
```title="bun"
bunx prisma migrate diff \

  --from-schema=schema.prisma \

  --to-config-datasource \

  --script
```

```bash title="pnpm"
pnpm prisma migrate diff \
  --from-schema=schema.prisma \
  --to-config-datasource \
  --script
```

```bash title="yarn"
yarn prisma migrate diff \
  --from-schema=schema.prisma \
  --to-config-datasource \
  --script
```

```bash title="npm"
npx prisma migrate diff \
  --from-schema=schema.prisma \
  --to-config-datasource \
  --script
```
:::

### [Compare migrations to database](#compare-migrations-to-database)

Generate a migration for a hotfix already applied on production:

:::code-group
```title="bun"
bunx prisma migrate diff \

  --from-migrations ./migrations \

  --to-config-datasource \

  --script
```

```bash title="pnpm"
pnpm prisma migrate diff \
  --from-migrations ./migrations \
  --to-config-datasource \
  --script
```

```bash title="yarn"
yarn prisma migrate diff \
  --from-migrations ./migrations \
  --to-config-datasource \
  --script
```

```bash title="npm"
npx prisma migrate diff \
  --from-migrations ./migrations \
  --to-config-datasource \
  --script
```
:::

### [Pipe output to db execute](#pipe-output-to-db-execute)

:::code-group
```title="bun"
bunx prisma migrate diff \

  --from-config-datasource \

  --to-schema=schema.prisma \

  --script | prisma db execute --stdin
```

```bash title="pnpm"
pnpm prisma migrate diff \
  --from-config-datasource \
  --to-schema=schema.prisma \
  --script | prisma db execute --stdin
```

```bash title="yarn"
yarn prisma migrate diff \
  --from-config-datasource \
  --to-schema=schema.prisma \
  --script | prisma db execute --stdin
```

```bash title="npm"
npx prisma migrate diff \
  --from-config-datasource \
  --to-schema=schema.prisma \
  --script | prisma db execute --stdin
```
:::

### [Check if sources are in sync](#check-if-sources-are-in-sync)

Exits with code 2 if changes are detected:

:::code-group
```title="bun"
bunx prisma migrate diff \

  --exit-code \

  --from-config-datasource \

  --to-schema=schema.prisma
```

```bash title="pnpm"
pnpm prisma migrate diff \
  --exit-code \
  --from-config-datasource \
  --to-schema=schema.prisma
```

```bash title="yarn"
yarn prisma migrate diff \
  --exit-code \
  --from-config-datasource \
  --to-schema=schema.prisma
```

```bash title="npm"
npx prisma migrate diff \
  --exit-code \
  --from-config-datasource \
  --to-schema=schema.prisma
```
:::

## [See also](#see-also)

- [Migration troubleshooting in production](/guides/prisma-migrate-v7-workflows-patching-and-hotfixing#fixing-failed-migrations-with-migrate-diff-and-db-execute)

## Related pages

- [Authentication & Tools](./authentication-tools-index.md)
- [Build](./build-index.md)
- [Changelog](../changelog.md)
- [Concepts](./concepts-index.md)
- [Console commands](./console-commands-index.md)
- [Contract Authoring](./contract-authoring-index.md)
- [Core Concepts](./core-concepts-index.md)
- [Data Modeling](./data-modeling-index.md)
- [Database](./database-index.md)
- [DB commands](./db-commands-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
