Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Prisma CLI reference

This document describes the Prisma CLI commands, arguments, and options.

The version command outputs information about your current prisma version, platform, and engine binaries.

The version command recognizes the following options to modify its behavior:

Option Required Description
--json No Outputs version information in JSON format.
prisma version
Environment variables loaded from .env

prisma               : 2.21.0-dev.4

@prisma/client       : 2.21.0-dev.4

Current platform     : windows

Query Engine         : query-engine 2fb8f444d9cdf7c0beee7b041194b42d7a9ce1e6 (at C:\Users\veroh\AppData\Roaming\npm\node_modules\@prisma\cli\query-engine-windows.exe)

Migration Engine     : migration-engine-cli 2fb8f444d9cdf7c0beee7b041194b42d7a9ce1e6 (at C:\Users\veroh\AppData\Roaming\npm\node_modules\@prisma\cli\migration-engine-windows.exe)

Format Binary        : prisma-fmt 60ba6551f29b17d7d6ce479e5733c70d9c00860e (at node_modules\@prisma\engines\prisma-fmt-windows.exe)

Default Engines Hash : 60ba6551f29b17d7d6ce479e5733c70d9c00860e

Studio               : 0.365.0
prisma -v
Environment variables loaded from .env

prisma               : 2.21.0-dev.4

@prisma/client       : 2.21.0-dev.4

Current platform     : windows

Query Engine         : query-engine 2fb8f444d9cdf7c0beee7b041194b42d7a9ce1e6 (at C:\Users\veroh\AppData\Roaming\npm\node_modules\@prisma\cli\query-engine-windows.exe)

Migration Engine     : migration-engine-cli 2fb8f444d9cdf7c0beee7b041194b42d7a9ce1e6 (at C:\Users\veroh\AppData\Roaming\npm\node_modules\@prisma\cli\migration-engine-windows.exe)

Format Binary        : prisma-fmt 60ba6551f29b17d7d6ce479e5733c70d9c00860e (at node_modules\@prisma\engines\prisma-fmt-windows.exe)

Default Engines Hash : 60ba6551f29b17d7d6ce479e5733c70d9c00860e

Studio               : 0.365.0
prisma version --json
Environment variables loaded from .env

{

  "prisma": "2.21.0-dev.4",

  "@prisma/client": "2.21.0-dev.4",

  "current-platform": "windows",

  "query-engine": "query-engine 60ba6551f29b17d7d6ce479e5733c70d9c00860e (at node_modules\\@prisma\\engines\\query-engine-windows.exe)",

  "migration-engine": "migration-engine-cli 60ba6551f29b17d7d6ce479e5733c70d9c00860e (at node_modules\\@prisma\\engines\\migration-engine-windows.exe)",

  "format-binary": "prisma-fmt 60ba6551f29b17d7d6ce479e5733c70d9c00860e (at node_modules\\@prisma\\engines\\prisma-fmt-windows.exe)",

  "default-engines-hash": "60ba6551f29b17d7d6ce479e5733c70d9c00860e",

  "studio": "0.365.0"

}

Bootstraps a fresh Prisma ORM project within the current directory.

The init command does not interpret any existing files. Instead, it creates a prisma directory containing a bare-bones schema.prisma file within your current directory.

By default, the project sets up a local Prisma Postgres instance but you can choose a different database using the --datasource-provider option.

Argument Required Description Default
--datasource-provider No Specifies the value for the provider field in the datasource block. Options are prisma+postgres, sqlite, postgresql, mysql, sqlserver, mongodb and cockroachdb. postgresql
--db No Shorthand syntax for --datasource-provider prisma+postgres; creates a new Prisma Postgres instance. Requires authentication in the PDP Console.
--prompt (or --vibe) No Scaffolds a Prisma schema based on the prompt and deploys it to a fresh Prisma Postgres instance. Requires authentication in the PDP Console.
--url No Define a custom datasource url.
--generator-provider No Define the generator provider to use. prisma-client
--preview-feature No Define the Preview features to use. To define multiple Preview features, you have to provide the flag multiple times for each Preview feature. See examples.
--output No Specifies the output location for the generated client. ../generated/prisma
--with-model No Adds a simple User model to the initial Prisma schema. Available since version 5.14.0.

Run prisma init

prisma init
npx prisma init

Initialized Prisma in your project

  prisma/

    schema.prisma

  prisma.config.ts

Next, choose how you want to set up your database:

CONNECT EXISTING DATABASE:

  1. Configure your DATABASE_URL in `prisma.config.ts`

  2. Run `npx prisma db pull` to introspect your database.

CREATE NEW DATABASE:

  Local: npx prisma dev (runs Postgres locally in your terminal)

  Cloud: npx create-db (creates a free Prisma Postgres database)

  Then, define your models in `prisma/schema.prisma` and run `npx prisma migrate dev` to apply your schema.

Learn more: https://pris.ly/getting-started

Next, run the prisma dev command to interact with your local Prisma Postgres instance (e.g. to run migrations or execute queries).

Run prisma init --datasource-provider sqlite

prisma init --datasource-provider sqlite

The command output contains helpful information on how to use the generated files and begin using Prisma ORM with your project.

Run prisma init --db

prisma init --db
✓ Select an authentication method Google

Authenticating to Prisma Platform via browser.

Visit the following URL in your browser to authenticate:

https://console.prisma.io/auth/cli?state=eyJjb6ll...

Successfully authenticated as amanyoyoyo@gmail.com.

Let's set up your Prisma Postgres database!

✓ Select your region: ap-southeast-1 - Asia Pacific (Singapore)

✓ Enter a project name: My Prisma Project

✓ Success! Your Prisma Postgres database is ready ✅

We found an existing schema.prisma file in your current project directory.

--- Database URL ---

Connect Prisma ORM to your Prisma Postgres database with this URL:

--- Next steps ---

Go to https://pris.ly/ppg-init for detailed instructions.

1. Install the Postgres adapter

npm install @prisma/adapter-pg

...and add it to your Prisma Client instance:

import { PrismaClient } from "./generated/prisma/client";

import { PrismaPg } from "@prisma/adapter-pg";

const connectionString = `${process.env.DATABASE_URL}`;

const adapter = new PrismaPg({ connectionString });

const prisma = new PrismaClient({ adapter });

2. Apply migrations

Run the following command to create and apply a migration:

npx prisma migrate dev

3. Manage your data

View and edit your data locally by running this command:

npx prisma studio

...or online in Console:

https://console.prisma.io/cmhyn0uwl0q6903foel16ff31/cmhyn143t074tyLfoezs684ag/cmhyn143t074uylfon8hfre5z/studio

4. Send queries from your app

If you already have an existing app with Prisma ORM, you can now run it and it will send queries against your newly created Prisma Postgres instance.

5. Learn more

For more info, visit the Prisma Postgres docs: https://pris.ly/ppg-docs

The command creates a new Prisma Postgres instance. Note that it requires you to be authenticated with the PDP Console, If you run it for the first time without being authenticated, the command will open the browser for you to log into Console.

Run prisma init --prompt "Simple habit tracker application"

prisma init --prompt "Simple habit tracker application"

The command scaffolds a Prisma schema and deploys it to a fresh Prisma Postgres instance. Note that it requires you to be authenticated with the PDP Console, If you run it for the first time without being authenticated, the command will open the browser for you to log into Console.

Run prisma init --preview-feature

prisma init --preview-feature metrics
datasource db {

  provider = "postgresql"

}

generator client {

  provider        = "prisma-client"

  previewFeatures = ["metrics"]

}
prisma init --preview-feature view --preview-feature metrics
datasource db {

  provider = "postgresql"

}

generator client {

  provider        = "prisma-client"

  previewFeatures = ["views", "metrics"]

}

prisma/schema.prisma

An initial schema.prisma file to define your schema in:

// This is your Prisma schema file,

// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "postgresql"

}

prisma.config.ts

A TypeScript configuration file for Prisma that defines your datasource URL and other settings:

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

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});

See the Prisma Config reference for more details.

.env

A file to define environment variables for your project:

# Environment variables declared in this file are automatically made available to Prisma.

# See the documentation for more detail: https://pris.ly/d/prisma-schema#using-environment-variables

# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.

# See the documentation for all the connection string options: https://pris.ly/d/connection-strings

DATABASE_URL="postgresql://user:password@localhost:5432/mydb"

.gitignore

A file to specify what folders/files git should ignore in your project.

node_modules

# Keep environment variables out of version control

.env

/generated/prisma

Run prisma init --url mysql://user:password@localhost:3306/mydb

The init command with the --url argument allows you to specify a custom datasource URL during Prisma initialization, instead of relying on a placeholder database URL:

prisma init --url mysql://user:password@localhost:3306/mydb

prisma/schema.prisma

A minimal schema.prisma file to define your schema in:

// This is your Prisma schema file,

// learn more about it in the docs: https://pris.ly/d/prisma-schema

datasource db {

  provider = "mysql"

}

generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

prisma.config.ts

A TypeScript configuration file for Prisma with the custom URL:

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

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});

.env

A file to define environment variables for your project:

# Environment variables declared in this file are automatically made available to Prisma.

# See the documentation for more detail: https://pris.ly/d/prisma-schema#using-environment-variables

# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.

# See the documentation for all the connection string options: https://pris.ly/d/connection-strings

DATABASE_URL="mysql://user:password@localhost:3306/mydb"

The generate command generates assets like Prisma Client based on the generator and data model blocks defined in your prisma/schema.prisma file.

The generate command is most often used to generate Prisma Client with the prisma-client generator. This does the following:

  1. Inspects the current directory to find a Prisma Schema to process.
  2. Generates a customized Prisma Client based on your schema into the output directory specified in the generator block.

To use the generate command, you must add a generator definition in your schema.prisma file. The prisma-client generator, used to generate Prisma Client, can be added by including the following in your schema.prisma file:

generator client {

  provider = "prisma-client"

  output   = "./generated"

}
Option Required Description Default
--data-proxy No The generate command will generate Prisma Client for use with Prisma Accelerate prior to Prisma 5.0.0. Mutually exclusive with --accelerate and --no-engine.
--accelerate No The generate command will generate Prisma Client for use with Prisma Accelerate. Mutually exclusive with --data-proxy and --no-engine. Available in Prisma 5.1.0 and later.
--no-engine No The generate command will generate Prisma Client without an accompanied engine for use with Prisma Accelerate. Mutually exclusive with --data-proxy and --accelerate. Available in Prisma ORM 5.2.0 and later.
--no-hints No The generate command will generate Prisma Client without usage hints, surveys or info banners being printed to the terminal. Available in Prisma ORM 5.16.0 and later.
--allow-no-models No The generate command will generate Prisma Client without generating any models.
--watch No The generate command will continue to watch the schema.prisma file and re-generate Prisma Client on file changes.
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma, ./prisma/schema.prisma
--generator No Specifies which generator to use to generate assets. This option may be provided multiple times to include multiple generators. By default, all generators in the target schema will be run.
prisma generate
✔ Generated Prisma Client to ./node_modules/.prisma/client in 61ms

You can now start using Prisma Client in your code:

import { PrismaClient } from '../prisma/generated/client'

// or const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

Explore the full API: https://pris.ly/d/client
prisma generate --schema=./alternative/schema.prisma
prisma generate --watch
Watching... /home/prismauser/prisma/prisma-play/prisma/schema.prisma

✔ Generated Prisma Client to ./node_modules/.prisma/client in 45ms
prisma generate --generator client
prisma generate --generator client --generator zod_schemas

The prisma-client generator creates a customized client for working with your database in a custom output directory specified by the output field - you can customize the output folder.

Validates the Prisma Schema Language of the Prisma schema file.

Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma, ./prisma/schema.prisma
prisma validate
Environment variables loaded from .env

Prisma schema loaded from prisma/schema.prisma

The schema at /absolute/path/prisma/schema.prisma is valid 🚀
prisma validate
Environment variables loaded from .env

Prisma schema loaded from prisma/schema.prisma

Error: Schema validation error - Error (query-engine-node-api library)

Error code: P1012

error: The preview feature "unknownFeatureFlag" is not known. Expected one of: [...]

  */}  schema.prisma:3

   |

 2 |     provider        = "prisma-client"

 3 |     previewFeatures = ["unknownFeatureFlag"]

   |

Validation Error Count: 1

[Context: getDmmf]

Prisma CLI Version : 4.5.0

Formats the Prisma schema file, which includes validating, formatting, and persisting the schema.

Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma, ./prisma/schema.prisma
--check No Fails if any files are unformatted. This can be used in CI to detect if the schema is formatted correctly
prisma format
Environment variables loaded from .env

Prisma schema loaded from prisma/schema.prisma

Formatted prisma/schema.prisma in 116ms �
prisma format
Environment variables loaded from .env

Prisma schema loaded from prisma/schema.prisma

Error: Schema validation error - Error (query-engine-node-api library)

Error code: P1012

error: The preview feature "unknownFeatureFlag" is not known. Expected one of: [...]

  */}  schema.prisma:3

   |

 2 |     provider        = "prisma-client"

 3 |     previewFeatures = ["unknownFeatureFlag"]

   |

Validation Error Count: 1

[Context: getDmmf]

Prisma CLI Version : 4.5.0

Prints information for debugging and bug reports.

Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma, ./prisma/schema.prisma
--help / --h No Displays the help message
prisma debug
-- Prisma schema --

Path: /prisma/schema.prisma

-- Local cache directory for engines files --

Path: /.cache/prisma

-- Environment variables --

When not set, the line is dimmed and no value is displayed.

When set, the line is bold and the value is inside the `` backticks.

For general debugging

 - CI:

 - DEBUG:

 - NODE_ENV:

 - RUST_LOG:

 - RUST_BACKTRACE:

 - NO_COLOR:

 - TERM: `xterm-256color`

 - NODE_TLS_REJECT_UNAUTHORIZED:

 - NO_PROXY:

 - http_proxy:

 - HTTP_PROXY:

 - https_proxy:

 - HTTPS_PROXY:

For more information see our [environment variable documentation](/orm/v7/reference/environment-variables-reference)

For hiding messages

 - PRISMA_DISABLE_WARNINGS:

 - PRISMA_HIDE_PREVIEW_FLAG_WARNINGS:

 - PRISMA_HIDE_UPDATE_MESSAGE:

For downloading engines

 - PRISMA_ENGINES_MIRROR:

 - PRISMA_BINARIES_MIRROR (deprecated):

 - PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING:

 - BINARY_DOWNLOAD_VERSION:

For configuring the Query Engine Type

 - PRISMA_CLI_QUERY_ENGINE_TYPE: (Not supported in Prisma ORM v7)

 - PRISMA_CLIENT_ENGINE_TYPE: (Not supported in Prisma ORM v7)

For custom engines

 - PRISMA_QUERY_ENGINE_BINARY: (Not supported in Prisma ORM v7)

 - PRISMA_QUERY_ENGINE_LIBRARY: (Not supported in Prisma ORM v7)

 - PRISMA_SCHEMA_ENGINE_BINARY:

 - PRISMA_MIGRATION_ENGINE_BINARY:

For the "postinstall" npm hook

 - PRISMA_GENERATE_SKIP_AUTOINSTALL: (Not supported in Prisma ORM v7)

 - PRISMA_SKIP_POSTINSTALL_GENERATE: (Not supported in Prisma ORM v7)

 - PRISMA_GENERATE_IN_POSTINSTALL: (Not supported in Prisma ORM v7)

For "prisma generate"

 - PRISMA_GENERATE_DATAPROXY: (Not supported in Prisma ORM v7)

 - PRISMA_GENERATE_NO_ENGINE: (Not supported in Prisma ORM v7)

For Prisma Client

 - PRISMA_SHOW_ALL_TRACES:

 - PRISMA_CLIENT_NO_RETRY (Binary engine only): (Not supported in Prisma ORM v7)

For Prisma Migrate

 - PRISMA_SCHEMA_DISABLE_ADVISORY_LOCK:

 - PRISMA_MIGRATE_SKIP_GENERATE: (Not supported in Prisma ORM v7)

 - PRISMA_MIGRATE_SKIP_SEED: (Not supported in Prisma ORM v7)

For Prisma Studio

 - BROWSER:

-- Terminal is interactive? --

true

-- CI detected? --

false

If you're using an older version of Prisma, you can use this command by running:

title="bun"
bunx prisma@prev debug
pnpm
pnpm dlx prisma@prev debug
yarn
yarn dlx prisma@prev debug
npm
npx prisma@prev debug

The dev command starts a local Prisma Postgres database that you can run Prisma ORM commands against. It is useful for development and testing, and lets you switch to Prisma Postgres in production.

Argument Required Description Default
--name (or -n) No Enables targeting a specific database instance. Learn more about using different local Prisma Postgres instances. default
--port (or -p) No Main port number the local Prisma Postgres HTTP server will listen on. 51213
--db-port (or -P) No Port number the local Prisma Postgres database server will listen on. 51214
--shadow-db-port No Port number the shadow database server will listen on. 51215
--detach (or -d) No Run the server in the background. false
--debug No Enable debug logging. false

Run prisma dev

prisma dev
$ npx prisma dev

Fetching latest updates for this subcommand...

✔  Great Success! 😉👍

   Your  prisma dev  server default is ready and listening on ports 63567-63569.

╭──────────────────────────────╮

│[q]uit  [h]ttp url  [t]cp urls│

╰──────────────────────────────╯

Run prisma dev with a specific name

bunx prisma dev --name="mydbname"
Bash
pnpm prisma dev --name="mydbname"
Bash
yarn prisma dev --name="mydbname"
Bash
npx prisma dev --name="mydbname"

This creates a named instance called mydbname that you can later start, stop, or manage using the instance management commands.

Run prisma dev in detached mode

This creates a named instance called mydbname that you can later start, stop, or manage using the instance management commands.

Run prisma dev in detached mode

bunx prisma dev --detach
Bash
pnpm prisma dev --detach
Bash
yarn prisma dev --detach
Bash
npx prisma dev --detach

This runs the server in the background, freeing up your terminal for other commands. Use prisma dev ls to see running servers and prisma dev stop to stop them.

This runs the server in the background, freeing up your terminal for other commands. Use prisma dev ls to see running servers and prisma dev stop to stop them.

Starts existing local Prisma Postgres instances in the background.

bunx prisma dev start <glob>
Bash
pnpm prisma dev start <glob>
Bash
yarn prisma dev start <glob>
Bash
npx prisma dev start <glob>

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be started, for example:

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be started, for example:

title="bun"
bunx prisma dev start mydb # starts a DB called `mydb` in the background (only if it already exists)
pnpm
pnpm prisma dev start mydb # starts a DB called `mydb` in the background (only if it already exists)
yarn
yarn prisma dev start mydb # starts a DB called `mydb` in the background (only if it already exists)
npm
npx prisma dev start mydb # starts a DB called `mydb` in the background (only if it already exists)

To start all databases that begin with mydb (e.g. mydb-dev and mydb-prod), you can use a glob:

title="bun"
bunx prisma dev start mydb* # starts all existing DBs starting with `mydb`
pnpm
pnpm prisma dev start mydb* # starts all existing DBs starting with `mydb`
yarn
yarn prisma dev start mydb* # starts all existing DBs starting with `mydb`
npm
npx prisma dev start mydb* # starts all existing DBs starting with `mydb`

This enables background instance management outside of the VS Code extension.

Lists all available local Prisma Postgres instances:

title="bun"
bunx prisma dev ls
pnpm
pnpm prisma dev ls
yarn
yarn prisma dev ls
npm
npx prisma dev ls

This command shows all instances on your system with their current status and configuration.

Stops one or more local Prisma Postgres databases:

bunx prisma dev stop <glob>
Bash
pnpm prisma dev stop <glob>
Bash
yarn prisma dev stop <glob>
Bash
npx prisma dev stop <glob>

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be stopped, for example:

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be stopped, for example:

title="bun"
bunx prisma dev stop mydb # stops a DB called `mydb`
pnpm
pnpm prisma dev stop mydb # stops a DB called `mydb`
yarn
yarn prisma dev stop mydb # stops a DB called `mydb`
npm
npx prisma dev stop mydb # stops a DB called `mydb`

To stop all databases that begin with mydb (e.g. mydb-dev and mydb-prod), you can use a glob:

bunx prisma dev stop mydb* # stops all DBs starting with `mydb`
Bash
pnpm prisma dev stop mydb* # stops all DBs starting with `mydb`
Bash
yarn prisma dev stop mydb* # stops all DBs starting with `mydb`
Bash
npx prisma dev stop mydb* # stops all DBs starting with `mydb`

[!NOTE] The stop command is interactive and includes safety prompts to prevent accidental operations.

Removes the data of one or more local Prisma Postgres databases from your file system:

bunx prisma dev rm <glob>
Bash
pnpm prisma dev rm <glob>
Bash
yarn prisma dev rm <glob>
Bash
npx prisma dev rm <glob>

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be removed, for example:

<glob> is a placeholder for a glob pattern to specify which local Prisma Postgres instances should be removed, for example:

title="bun"
bunx prisma dev rm mydb # removes a DB called `mydb`
pnpm
pnpm prisma dev rm mydb # removes a DB called `mydb`
yarn
yarn prisma dev rm mydb # removes a DB called `mydb`
npm
npx prisma dev rm mydb # removes a DB called `mydb`

To remove all databases that begin with mydb (e.g. mydb-dev and mydb-prod), you can use a glob:

title="bun"
bunx prisma dev rm mydb* # removes all DBs starting with `mydb`
pnpm
pnpm prisma dev rm mydb* # removes all DBs starting with `mydb`
yarn
yarn prisma dev rm mydb* # removes all DBs starting with `mydb`
npm
npx prisma dev rm mydb* # removes all DBs starting with `mydb`
Argument Required Description Default
--force No Stops any running servers before removing them. Without this flag, the command will fail if any server is running. false

The db pull command connects to your database and adds Prisma models to your Prisma schema that reflect the current database schema.

Before using the db pull command, you must configure your database connection in your prisma.config.ts file.

For example:

title="schema.prisma"
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}
title="prisma.config.ts"
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});
Option Required Description Default
--force No Force overwrite of manual changes made to schema. The generated schema will be based on the introspected schema only.
--print No Prints the created schema.prisma to the screen instead of writing it to the filesystem.
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma, ./prisma/schema.prisma
prisma db pull
Introspecting based on datasource defined in schema.prisma …

✔ Introspected 2 models and wrote them into schema.prisma in 38ms

Run prisma generate to generate Prisma Client.
prisma db pull --schema=./alternative/schema.prisma
Introspecting based on datasource defined in alternative/schema.prisma …

✔ Introspected 2 models and wrote them into alternative/schema.prisma in 60ms

Run prisma generate to generate Prisma Client.
prisma db pull --print
generator client {

  provider = "prisma-client"

  output   = "./generated"

}

datasource db {

  provider = "sqlite"

  url      = "file:./hello-prisma.db"

}

model User {

  email   String    @unique

  name    String?

  user_id Int       @id @default(autoincrement())

  post    Post[]

  profile Profile[]

}

model Post {

  content   String?

  post_id   Int     @id @default(autoincrement())

  title     String

  author    User?   @relation(fields: [author_id], references: [user_id])

  author_id Int?

}

model Profile {

  bio        String?

  profile_id Int     @id @default(autoincrement())

  user       User    @relation(fields: [user_id], references: [user_id])

  user_id    Int     @unique

}

The db push command pushes the state of your Prisma schema to the database without using migrations. It creates the database if the database does not exist.

This command is a good choice when you do not need to version schema changes, such as during prototyping and local development.

See also:

Before using the db push command, you must configure your database connection in your prisma.config.ts file.

For example:

title="schema.prisma"
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}
title="prisma.config.ts"
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});
Options Required Description
--force-reset No Resets the database and then updates the schema - useful if you need to start from scratch due to unexecutable migrations.
--accept-data-loss No Ignore data loss warnings. This option is required if as a result of making the schema changes, data may be lost.
--help / --h No Displays the help message
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma

Push the schema:

prisma db push

Push the schema, accepting data loss:

prisma db push --accept-data-loss

Push the schema with a custom schema location:

prisma db push --schema=/tmp/schema.prisma

db seed changed from Preview to Generally Available (GA) in 3.0.1.

See Seeding your database

Options Required Description
--help / --h No Displays the help message
-- No Allows the use of custom arguments defined in a seed file

The -- argument/ delimiter/ double-dash is available from version 4.15.0 or later.

prisma db seed

This command applies a SQL script to the database without interacting with the Prisma migrations table. The datasource URL configuration is read from the Prisma config file (e.g., prisma.config.ts).

The output of the command is connector-specific, and is not meant for returning data, but only to report success or failure.

See also:

Before using the db execute command, you must configure your database connection in your prisma.config.ts file.

For example:

title="schema.prisma"
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}

Your prisma.config.ts file should look like this:

title="prisma.config.ts"
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});
Options Required Description
--file Yes* Path to a file. The content will be sent as the script to be executed
--stdin No Use the terminal standard input as the script to be executed
--config No Custom path to your Prisma config file
--help No Displays the help message

* Either --file or --stdin is required to provide the script input.

  • Execute the content of a SQL script file using the datasource configured in prisma.config.ts:

    prisma db execute --file ./script.sql
  • Execute the SQL script from stdin using the configured datasource:

    echo 'TRUNCATE TABLE dev;' | prisma db execute --stdin

Prisma Migrate changed from Preview to Generally Available (GA) in 2.19.0.

For use in development environments only, requires shadow database

The migrate dev command:

  1. Reruns the existing migration history in the shadow database in order to detect schema drift (edited or deleted migration file, or a manual changes to the database schema)
  2. Applies pending migrations to the shadow database (for example, new migrations created by colleagues)
  3. Generates a new migration from any changes you made to the Prisma schema before running migrate dev
  4. Applies all unapplied migrations to the development database and updates the _prisma_migrations table

See also:

Option Required Description Default
--create-only No Creates a new migration but does not apply it. This also works if you haven't made any changes to your schema (in that case, an empty migration is created). Run migrate dev to apply migration.
--name / -n No Name the migration (e.g. prisma migrate dev --name added_job_title)
--help / -h No Displays the help message
Argument Required Description Default
--name No The name of the migration. If no name is provided, the CLI will prompt you.
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma

Apply all migrations, then create and apply any new migrations:

prisma migrate dev

Apply all migrations and create a new migration if there are schema changes, but do not apply it:

prisma migrate dev --create-only

For use in development environments only

This command:

  1. Drops the database/schema if possible, or performs a soft reset if the environment does not allow deleting databases/schemas
  2. Creates a new database/schema with the same name if the database/schema was dropped
  3. Applies all migrations
Option Required Description Default
--force No Skip the confirmation prompt
--help / --h No Displays the help message
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma
prisma migrate reset

Prisma ORM includes built-in safety checks to prevent accidental destructive commands when run through AI coding assistants. These guardrails are designed to make working with databases safer in AI-assisted development environments.

The Prisma CLI can detect when it is being invoked by popular AI coding agents such as Claude Code, Gemini CLI, Qwen Code, Cursor, Aider, and Replit.

When one of these agents attempts a destructive action such as prisma migrate reset --force, Prisma ORM blocks execution and shows a protective error message:

Environment variables loaded from .env

Prisma schema loaded from prisma/schema.prisma

Datasource "db": PostgreSQL database "postgres", schema "public" at "accelerate.prisma-data.net"

Error: Prisma Migrate detected that it was invoked by Cursor.

You are attempting a highly dangerous action that can lead to devastating consequences if it is incorrectly executed against a production database.

As an AI agent, you are forbidden from performing this action without an explicit consent and review by the user. You must stop at this point and respond to the user with a clear message that includes the following information:

- What action you are trying to perform (including the exact CLI command).

- Your motivation and reasoning for performing this action.

- Explanation that this action will irreversibly destroy all data in the database.

- Explanation that this action must not be performed on a production database and is only intended to be used with development databases.

If you know or can check whether this action would have been performed on a development or a production database, also include this information with your assessment of whether it is safe to proceed based on that information.

You must ask the user if they want to proceed with this action. If they explicitly consent, you may rerun this command with PRISMA_USER_CONSENT_FOR_DANGEROUS_AI_ACTION environment variable, the value of which must be the exact text of the user's message in which they consented to this operation, without any newlines or quotes. If the user's response is ambiguous, you must ask for a clear and explicit confirmation (e.g., "yes") before proceeding. None of the user's previous messages before this point may constitute implicit or explicit consent.

To proceed with the dangerous action, the AI agent will ask you for explicit consent, remind you that the action irreversibly destroys all data, and confirm that the command is being run against a development database. Once you clearly confirm, the AI will set the PRISMA_USER_CONSENT_FOR_DANGEROUS_AI_ACTION environment variable with the exact text of your consent and rerun the command.

The migrate deploy command applies all pending migrations, and creates the database if it does not exist. Primarily used in non-development environments. This command:

  • Does not look for drift in the database or changes in the Prisma schema
  • Does not reset the database or generate artifacts
  • Does not rely on a shadow database
Option Required Description Default
--help / --h No Displays the help message
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma
prisma migrate deploy

The migrate resolve command allows you to solve migration history issues in production by marking a failed migration as already applied (supports baselining) or rolled back.

Note that this command can only be used with a failed migration. If you try to use it with a successful migration you will receive an error.

Option Required Description Default
--help / --h No Displays the help message
Argument Required Description Default
--applied No* Record a specific migration as applied - for example --applied "20201231000000_add_users_table"
--rolled-back No* Record a specific migration as rolled back - for example --rolled-back "20201231000000_add_users_table" ./schema.prisma
./prisma/schema.prisma
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma

You must specify either --rolled-back or --applied.

prisma migrate resolve --applied 20201231000000_add_users_table
prisma migrate resolve --rolled-back 20201231000000_add_users_table

The prisma migrate status command looks up the migrations in ./prisma/migrations/* folder and the entries in the _prisma_migrations table and compiles information about the state of the migrations in your database.

For example:

Status

3 migrations found in prisma/migrations

Your local migration history and the migrations table from your database are different:

The last common migration is: 20201127134938_new_migration

The migration have not yet been applied:

20201208100950_test_migration

The migrations from the database are not found locally in prisma/migrations:

20201208100950_new_migration

In versions 4.3.0 and later, prisma migrate status exits with exit code 1 in the following cases:

  • a database connection error occurs
  • there are migration files in the migrations directory that have not been applied to the database
  • the migration history in the migrations directory has diverged from the state of the database
  • no migration table is found
  • failed migrations are found
Option Required Description Default
--help / --h No Displays the help message
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma
prisma migrate status

This command compares two database schema sources and outputs a description of a migration taking the first to the state of the second.

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

The format of the command is:

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

where the --from-... and --to-... options are selected based on the type of database schema source. The supported types of sources are:

  • live databases
  • migration histories
  • Prisma schema data models
  • an empty schema

Both schema sources must use the same database provider. For example, a diff comparing a PostgreSQL data source with a SQLite data source is not supported.

See also:

Before using the migrate diff command, if you are using --from-config-datasource or --to-config-datasource, you must configure your database connection in your prisma.config.ts file.

For example:

title="schema.prisma"
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}
title="prisma.config.ts"
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});

One of the following --from-... options is required:

Options Description Notes
--from-empty Assume that the data model you are migrating from is empty
--from-schema Path to a Prisma schema file, uses the data model for the diff
--from-migrations Path to the Prisma Migrate migrations directory Not supported in MongoDB
--from-config-datasource Use the datasource from the Prisma config file Prisma v7+

One of the following --to-... options is required:

Options Description Notes
--to-empty Assume that the data model you are migrating to is empty
--to-schema Path to a Prisma schema file, uses the data model for the diff
--to-migrations Path to the Prisma Migrate migrations directory Not supported in MongoDB
--to-config-datasource Use the datasource from the Prisma config file Prisma v7+

Other options:

Options Required Description Notes
--script No Outputs a SQL script instead of the default human-readable summary Not supported in MongoDB
-o, --output No Writes to a file instead of stdout Available since 5.12.1
--exit-code No Change the exit code behavior to signal if the diff is empty or not (Empty: 0, Error: 1, Not empty: 2). Default behavior is Success: 0, Error: 1.
--config No Custom path to your Prisma config file
--help No Displays the help message
  • Compare the configured database to a Prisma schema (e.g., to roll forward after a migration failed):

    prisma migrate diff \
    
      --from-config-datasource \
    
      --to-schema=next_datamodel.prisma \
    
      --script
  • Compare a Prisma schema to the configured database:

    prisma migrate diff \
    
      --from-schema=schema.prisma \
    
      --to-config-datasource \
    
      --script
  • Compare the migrations directory to the configured database (e.g., to generate a migration for a hotfix already applied on production):

    prisma migrate diff \
    
      --from-migrations ./migrations \
    
      --to-config-datasource \
    
      --script
  • Pipe the output to prisma db execute:

    prisma migrate diff \
    
      --from-config-datasource \
    
      --to-schema=schema.prisma \
    
      --script | prisma db execute --stdin
  • Detect if both sources are in sync (exits with code 2 if changes are detected):

    prisma migrate diff \
    
      --exit-code \
    
      --from-config-datasource \
    
      --to-schema=schema.prisma

The platform command is in Early Access. It provides access to the Prisma Data Platform through the Prisma CLI starting in version 5.10.0 or later.

  • Authentication:

    • platform auth login: Opens a browser window for login or account creation.
    • platform auth logout: Logs out of the platform.
    • platform auth show: Displays information about the currently authenticated user.
  • Workspace Management:

    • platform workspace show: Lists all workspaces available to your account.
  • Project Management:

    • platform project show: Lists all projects within the specified workspace.
    • platform project create: Creates a new project within the specified workspace.
    • platform project delete: Deletes the specified project.
  • Environment Management:

    • platform environment show: Lists all environments for the specified project.
    • platform environment create: Creates a new environment within the specified project.
    • platform environment delete: Deletes the specified environment.
  • API Key Management:

    • platform apikey show: Lists all API keys for the specified environment.
    • platform apikey create: Creates a new API key for the specified environment.
    • platform apikey delete: Deletes the specified API key.
  • Prisma Accelerate:

    • platform accelerate enable: Enables Prisma Accelerate for the specified environment.
    • platform accelerate disable: Disables Prisma Accelerate for the specified environment.

You can find the complete list of available commands with the arguments in the prisma platform command reference.

The studio command allows you to interact with and manage your data interactively. It does this by starting a local web server with a web app configured with your project's data schema and records.

Prisma ORM v7 ships a new version of Prisma Studio.

Before using the studio command, you must configure your database connection in your prisma.config.ts file.

For example:

title="schema.prisma"
generator client {

  provider = "prisma-client"

  output   = "../generated/prisma"

}

datasource db {

  provider = "sqlite"

}
title="prisma.config.ts"
import { defineConfig, env } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  migrations: {

    path: "prisma/migrations",

  },

  datasource: {

    url: env("DATABASE_URL"),

  },

});

The studio command recognizes the following options:

Option Required Description Default
-b, --browser No The browser to auto-open Studio in. <your-default-browser>
-h, --help No Show all available options and exit
-p, --port No The port number to start Studio on. 5555
--config No Custom path to your Prisma config file
--url No Database connection string (overrides the one in your Prisma config)
Argument Required Description Default
--schema No Specifies the path to the desired schema.prisma file to be processed instead of the default path. Both absolute and relative paths are supported. ./schema.prisma
./prisma/schema.prisma
prisma studio
prisma studio --port 7777
prisma studio --browser firefox
prisma studio --browser none
prisma studio --config=./prisma.config.ts
prisma studio --url="postgresql://user:password@localhost:5432/dbname"

Prisma CLI supports custom HTTP proxies. This is particularly relevant when being behind a corporate firewall.

To activate usage of the proxy, provide either of the following environment variables:

  • HTTP_PROXY or http_proxy: Proxy URL for http traffic, for example http://localhost:8080
  • HTTPS_PROXY or https_proxy: Proxy URL for https traffic, for example https://localhost:8080

The create-db command provisions a temporary Prisma Postgres database with a single command. This is a standalone utility that can be invoked using npx. It's ideal for quickly testing, prototyping, or integrating with Prisma Postgres.

You can run the following variants:

Command Description
npx create-db@latest Creates a temporary Prisma Postgres database.
npx create-pg@latest Alias for npx create-db.
npx create-postgres@latest Alias for npx create-db.

Each database created with these commands:

  • Is available for 24 hours by default.
  • Can be claimed for free to make it permanent using the URL displayed in the CLI output.

For full usage details, options (such as --region and --interactive), and examples, see the npx create-db reference.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu