Prisma CLI 参考
本文档描述了 Prisma CLI 命令、参数和选项。
命令
version (-v)
version 命令输出有关您当前 prisma 版本、平台和引擎二进制文件信息。
选项
version 命令识别以下选项来修改其行为
| 选项 | 必需 | 描述 |
|---|---|---|
--json | 否 | 以 JSON 格式输出版本信息。 |
示例
输出版本信息
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
输出版本信息 (-v)
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
以 JSON 格式输出版本信息
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"
}
init
在当前目录中引导一个全新的 Prisma ORM 项目。
init 命令不解释任何现有文件。相反,它会在当前目录中创建一个包含基本 schema.prisma 文件的 prisma 目录。
默认情况下,项目设置一个本地 Prisma Postgres 实例,但您可以使用 --datasource-provider 选项选择不同的数据库。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--datasource-provider | 否 | 指定 datasource 块中 provider 字段的值。选项包括 prisma+postgres、sqlite、postgresql、mysql、sqlserver、mongodb 和 cockroachdb。 | postgresql |
--db | 否 | --datasource-provider prisma+postgres 的简写语法;创建一个新的Prisma Postgres 实例。需要在以下位置进行身份验证. | |
--prompt(或 --vibe) | 否 | 根据提示搭建 Prisma schema,并将其部署到一个全新的 Prisma Postgres 实例。需要在以下位置进行身份验证. | |
--url | 否 | 定义自定义 datasource URL。 | |
--generator-provider | 否 | 定义要使用的生成器提供程序。 | prisma-client |
--preview-feature | 否 | 定义要使用的预览功能。要定义多个预览功能,您必须为每个预览功能多次提供该标志。请参见示例。 | |
--output | 否 | 指定生成客户端的输出位置。 | ../generated/prisma |
--with-model | 否 | 向初始 Prisma schema 添加一个简单的 User 模型。自版本 5.14.0 起可用。 |
示例
运行 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
接下来,运行 prisma dev 命令以与您的本地 Prisma Postgres 实例交互(例如,运行迁移或执行查询)。
运行 prisma init --datasource-provider sqlite
prisma init --datasource-provider sqlite
命令输出包含有关如何使用生成的文件并开始在您的项目中使用 Prisma ORM 的有用信息。
运行 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
该命令创建一个新的 Prisma Postgres 实例。请注意,这要求您已通过以下方式进行身份验证,如果您在未进行身份验证的情况下首次运行它,该命令将打开浏览器,让您登录控制台。
运行 prisma init --prompt "Simple habit tracker application"
prisma init --prompt "Simple habit tracker application"
该命令搭建了一个 Prisma schema 并将其部署到一个全新的 Prisma Postgres 实例。请注意,这要求您已通过以下方式进行身份验证,如果您在未进行身份验证的情况下首次运行它,该命令将打开浏览器,让您登录控制台。
运行 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
一个初始 schema.prisma 文件,用于定义您的 schema
// 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
一个用于 Prisma 的 TypeScript 配置文件,用于定义您的数据源 URL 和其他设置
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
有关更多详细信息,请参阅 Prisma 配置参考。
.env
一个文件,用于定义项目的环境变量
# 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
一个文件,用于指定 git 在您的项目中应忽略哪些文件夹/文件。
node_modules
# Keep environment variables out of version control
.env
/generated/prisma
运行 prisma init --url mysql://user:password@localhost:3306/mydb
带有 --url 参数的 init 命令允许您在 Prisma 初始化期间指定自定义数据源 URL,而不是依赖占位符数据库 URL
prisma init --url mysql://user:password@localhost:3306/mydb
生成资产
prisma/schema.prisma
一个最小的 schema.prisma 文件,用于定义您的 schema
// 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
一个带有自定义 URL 的 Prisma TypeScript 配置文件
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
.env
一个文件,用于定义项目的环境变量
# 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"
generate
generate 命令根据 prisma/schema.prisma 文件中定义的 generator 和 data model 块生成 Prisma Client 等资产。
generate 命令最常用于使用 prisma-client 生成器生成 Prisma Client。它执行以下操作:
- 检查当前目录以查找要处理的 Prisma Schema。
- 根据您的 schema 生成自定义的 Prisma Client 到生成器块中指定的输出目录。
先决条件
要使用 generate 命令,您必须在 schema.prisma 文件中添加生成器定义。用于生成 Prisma Client 的 prisma-client 生成器可以通过在 schema.prisma 文件中包含以下内容来添加
generator client {
provider = "prisma-client"
output = "./generated"
}
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--data-proxy | 否 | 在 Prisma 5.0.0 之前,generate 命令将生成用于 Prisma Accelerate 的 Prisma Client。与 --accelerate 和 --no-engine 互斥。 | |
--accelerate | 否 | generate 命令将生成用于 Prisma Accelerate 的 Prisma Client。与 --data-proxy 和 --no-engine 互斥。在 Prisma 5.1.0 及更高版本中可用。 | |
--no-engine | 否 | generate 命令将生成不带引擎的 Prisma Client,用于 Prisma Accelerate。与 --data-proxy 和 --accelerate 互斥。在 Prisma ORM 5.2.0 及更高版本中可用。 | |
--no-hints | 否 | generate 命令将生成 Prisma Client,而不将使用提示、调查或信息横幅打印到终端。在 Prisma ORM 5.16.0 及更高版本中可用。 | |
--allow-no-models | 否 | generate 命令将生成 Prisma Client,而不生成任何模型。 | |
--watch | 否 | generate 命令将继续监视 schema.prisma 文件并在文件更改时重新生成 Prisma Client。 |
弃用警告
自 Prisma 5.2.0 起,--data-proxy 和 --accelerate 已弃用,取而代之的是 --no-engine,因为 Prisma Client 不再需要选项即可与 Prisma Accelerate 配合使用。所有选项都可用且功能相似,但我们推荐使用 --no-engine,因为它会阻止下载引擎,这将大大影响部署到无服务器和边缘功能的应用程序的大小。
参数
| 参数 | 必需 | 描述 | 默认值 | |
|---|---|---|---|---|
--schema | 否 | 指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma, ./prisma/schema.prisma | |
--generator | 否 | 指定用于生成资产的生成器。此选项可以多次提供,以包含多个生成器。默认情况下,将运行目标 schema 中的所有生成器。 |
示例
使用默认 schema.prisma 路径生成 Prisma Client
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
使用非默认 schema.prisma 路径生成 Prisma Client
prisma generate --schema=./alternative/schema.prisma
继续监视 schema.prisma 文件更改以自动重新生成 Prisma Client
prisma generate --watch
Watching... /home/prismauser/prisma/prisma-play/prisma/schema.prisma
✔ Generated Prisma Client to ./node_modules/.prisma/client in 45ms
只使用特定生成器运行 generate 命令
prisma generate --generator client
使用多个特定生成器运行 generate 命令
prisma generate --generator client --generator zod_schemas
生成资产
prisma-client 生成器创建一个定制客户端,用于在 output 字段指定的自定义输出目录中处理您的数据库 - 您可以自定义输出文件夹。
validate
验证 Prisma schema 文件的 Prisma Schema 语言。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma, ./prisma/schema.prisma |
示例
验证没有错误的 schema
prisma validate
验证存在验证错误的 schema
prisma validate
format
格式化 Prisma schema 文件,包括验证、格式化和持久化 schema。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma, ./prisma/schema.prisma |
--check | 否 | 如果任何文件未格式化,则失败。这可以在 CI 中使用,以检测 schema 是否正确格式化 |
示例
验证没有错误的 schema
prisma format
格式化存在验证错误的 schema
prisma format
debug
打印用于调试和 bug 报告的信息。
这从 5.6.0 及更高版本可用。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma, ./prisma/schema.prisma |
--help / --h | 否 | 显示帮助消息 |
示例
prisma debug
如果您使用的是旧版 Prisma,可以通过运行此命令来使用此命令
npx prisma@latest debug
dev
dev 命令启动一个 本地 Prisma Postgres 数据库,您可以对其运行 Prisma ORM 命令。它对于开发和测试目的非常有用,并且还允许您轻松切换到生产环境中的 Prisma Postgres。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--name(或 -n) | 否 | 启用针对特定数据库实例。了解更多。 | |
--port(或 -p) | 否 | 本地 Prisma Postgres HTTP 服务器将监听的主端口号。 | 51213 |
--db-port(或 -P) | 否 | 本地 Prisma Postgres 数据库服务器将监听的端口号。 | 51214 |
--shadow-db-port | 否 | 影子数据库服务器将监听的端口号。 | 51215 |
--debug | 否 | 启用调试日志记录。 | false |
示例
运行 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│
╰──────────────────────────────╯
dev stop
停止一个或多个本地 Prisma Postgres 数据库
npx prisma dev stop <glob>
<glob> 是一个 glob 模式的占位符,用于指定应停止哪些本地 Prisma Postgres 实例,例如
npx prisma dev stop mydb # stops a DB called `mydb`
要停止所有以 mydb 开头的数据库(例如 mydb-dev 和 mydb-prod),您可以使用 glob
npx prisma dev stop mydb* # stops all DBs starting with `mydb`
dev rm
从您的文件系统中删除一个或多个本地 Prisma Postgres 数据库的数据
npx prisma dev rm <glob>
<glob> 是一个 glob 模式的占位符,用于指定应删除哪些本地 Prisma Postgres 实例,例如
npx prisma dev stop mydb # stops a DB called `mydb`
要停止所有以 mydb 开头的数据库(例如 mydb-dev 和 mydb-prod),您可以使用 glob
npx prisma dev stop mydb* # stops all DBs starting with `mydb`
db
db pull
db pull 命令连接到您的数据库,并将反映当前数据库 schema 的 Prisma 模型添加到您的 Prisma schema 中。
警告:该命令将用新的 schema 覆盖当前的 schema.prisma 文件。一些手动更改或自定义可能会丢失。在运行 db pull 之前,如果您的 schema.prisma 文件包含重要的修改,请务必备份它(或将当前状态提交到版本控制以便能够恢复任何更改)。
使用 db pull 命令对 MongoDB 连接器 进行内省会采样数据而不是读取 schema。
先决条件
在使用 db pull 命令之前,您必须在 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'),
},
})
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--force | 否 | 强制覆盖对 schema 的手动更改。生成的 schema 将仅基于内省的 schema。 | |
--print | 否 | 将创建的 schema.prisma 打印到屏幕,而不是写入文件系统。 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma, ./prisma/schema.prisma |
示例
分析数据库并将其 schema 写入 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.
指定替代的 schema.prisma 文件以进行读写
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.
显示生成的 schema.prisma 文件,而不是将其写入文件系统
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
}
db push
db push 命令将 Prisma schema 的状态推送到数据库,而无需使用迁移。如果数据库不存在,它会创建数据库。
当您不需要版本化 schema 更改时,例如在原型设计和本地开发期间,此命令是一个不错的选择。
另请参阅
先决条件
在使用 db push 命令之前,您必须在 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'),
},
})
选项
| 选项 | 必需 | 描述 |
|---|---|---|
--skip-generate | 否 | 跳过生成 Prisma Client 等工件 |
--force-reset | 否 | 重置数据库,然后更新 schema - 如果您由于不可执行的迁移而需要从头开始,这会很有用。 |
--accept-data-loss | 否 | 忽略数据丢失警告。如果由于 schema 更改可能导致数据丢失,则此选项是必需的。 |
--help / --h | 否 | 显示帮助消息 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
推送 schema
prisma db push
推送 schema,接受数据丢失
prisma db push --accept-data-loss
使用自定义 schema 位置推送 schema
prisma db push --schema=/tmp/schema.prisma
db seed
db seed 在 3.0.1 版本中从预览版变为通用版 (GA)。
请参阅为数据库播种
选项
| 选项 | 必需 | 描述 |
|---|---|---|
--help / --h | 否 | 显示帮助消息 |
-- | 否 | 允许使用种子文件中定义的自定义参数 |
-- 参数/分隔符/双短划线从 4.15.0 或更高版本可用。
示例
prisma db seed
db execute
db execute 命令在 3.13.0 及更高版本中通常可用。如果您使用的是 3.9.0 到 3.13.0 之间的版本,则它在 --preview-feature CLI 标志后可用。
此命令目前不支持 MongoDB。
此命令将 SQL 脚本应用于数据库,而无需与 Prisma 迁移表交互。脚本接受两个输入
- SQL 脚本,可以从标准输入或文件中提供
- 数据源,可以是数据源的 URL 或 Prisma schema 文件的路径
命令的输出是连接器特定的,并非用于返回数据,仅用于报告成功或失败。
另请参阅
先决条件
在使用 db execute 命令之前,如果您不使用 --url 选项,您必须在 prisma.config.ts 文件中配置您的数据库连接。
例如
generator client {
provider = "prisma-client"
output = "../generated/prisma"
}
datasource db {
provider = "sqlite"
}
您的 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'),
},
})
选项
需要以下数据源输入之一
| 选项 | 描述 |
|---|---|
--url | 要运行命令的数据源 URL |
--schema | Prisma schema 文件的路径,使用 datasource 块中的 URL |
需要以下脚本输入之一
| 选项 | 描述 |
|---|---|
--stdin | 使用终端标准输入作为要执行的脚本 |
--file | 文件路径。内容将作为要执行的脚本发送 |
其他选项
| 选项 | 必需 | 描述 |
|---|---|---|
--help | 否 | 显示帮助消息。 |
示例
-
获取位于
./script.sql的 SQL 文件的内容,并在schema.prisma文件的datasource块中指定的数据库上执行它prisma db execute --file ./script.sql --schema schema.prisma -
从标准输入获取 SQL 脚本,并在
DATABASE_URL环境变量中给出的数据源 URL 指定的数据库上执行它echo 'TRUNCATE TABLE dev;' | prisma db execute --stdin --url="$DATABASE_URL"
Prisma Migrate
Prisma Migrate 在 2.19.0 版本中从预览版变为通用版 (GA)。
migrate dev
仅用于开发环境,需要影子数据库
migrate dev 命令
- 重新运行 影子数据库 中现有的迁移历史记录,以检测 schema 漂移(已编辑或删除的迁移文件,或对数据库 schema 的手动更改)
- 将待处理的迁移应用于影子数据库(例如,同事创建的新迁移)
- 从您在运行
migrate dev之前对 Prisma schema 所做的任何更改生成新的迁移 - 将所有未应用的迁移应用于开发数据库并更新
_prisma_migrations表 - 触发工件的生成(例如,Prisma Client)
另请参阅
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--create-only | 否 | 创建新迁移但不应用它。即使您没有对 schema 进行任何更改(在这种情况下,会创建一个空迁移),这也会起作用。运行 migrate dev 以应用迁移。 | |
--skip-seed | 否 | 跳过触发播种 | |
--skip-generate | 否 | 跳过触发生成器(例如,Prisma Client) | |
--name / -n | 否 | 命名迁移(例如 prisma migrate dev --name added_job_title) | |
--help / -h | 否 | 显示帮助消息 |
如果在运行 prisma migrate dev 时使用 --create-only 检测到 schema 漂移,系统会提示您重置数据库。
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--name | 否 | 迁移的名称。如果没有提供名称,CLI 将提示您。 | |
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
应用所有迁移,然后创建并应用任何新迁移
prisma migrate dev
应用所有迁移,如果 schema 发生更改,则创建新迁移,但不应用它
prisma migrate dev --create-only
migrate reset
仅用于开发环境
此命令
- 如果可能,删除数据库/schema,如果环境不允许删除数据库/schema,则执行软重置
- 如果数据库/schema 已删除,则创建同名的新数据库/schema
- 应用所有迁移
- 运行种子脚本
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--force | 否 | 跳过确认提示 | |
--skip-generate | 否 | 跳过触发生成器(例如,Prisma Client) | |
--skip-seed | 否 | 跳过触发播种 | |
--help / --h | 否 | 显示帮助消息 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
prisma migrate reset
prisma migrate reset 的 AI 安全防护
Prisma ORM 包含内置的安全检查,以防止通过 AI 编码助手运行时意外的破坏性命令。这些防护措施旨在使在 AI 辅助开发环境中处理数据库更安全。
Prisma CLI 可以检测到何时被流行的 AI 编码代理(如 Claude Code、Gemini CLI、Qwen Code、Cursor、Aider 和 Replit)调用。
当其中一个代理尝试执行破坏性操作(例如 prisma migrate reset --force)时,Prisma ORM 会阻止执行并显示保护性错误消息
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 perfoming this action.
- Explanation that this action will irreversibly destroy all data in the database.
- Explanation that this action must not be perfomed 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 assesment 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.
要继续执行危险操作,AI 代理会征求您的明确同意,提醒您该操作会不可逆地销毁所有数据,并确认该命令是针对开发数据库运行的。一旦您明确确认,AI 将设置 PRISMA_USER_CONSENT_FOR_DANGEROUS_AI_ACTION 环境变量,其中包含您同意的确切文本,并重新运行该命令。
migrate deploy
migrate deploy 命令应用所有待处理的迁移,并在数据库不存在时创建数据库。主要用于非开发环境。此命令
- 不检查数据库中的漂移或 Prisma schema 中的更改
- 不重置数据库或生成工件
- 不依赖影子数据库
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--help / --h | 否 | 显示帮助消息 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
prisma migrate deploy
migrate resolve
migrate resolve 命令允许您通过将失败的迁移标记为已应用(支持基线)或已回滚来解决生产环境中的迁移历史问题。
请注意,此命令只能用于失败的迁移。如果您尝试将其用于成功的迁移,您将收到错误。
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--help / --h | 否 | 显示帮助消息 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--applied | 否* | 将特定迁移记录为已应用 - 例如 --applied "20201231000000_add_users_table" | |
--rolled-back | 否* | 将特定迁移记录为已回滚 - 例如 --rolled-back "20201231000000_add_users_table" | ./schema.prisma./prisma/schema.prisma |
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
您必须指定 --rolled-back 或 --applied。
示例
prisma migrate resolve --applied 20201231000000_add_users_table
prisma migrate resolve --rolled-back 20201231000000_add_users_table
migrate status
prisma migrate status 命令查找 ./prisma/migrations/* 文件夹中的迁移和 _prisma_migrations 表中的条目,并编译有关数据库中迁移状态的信息。
例如
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
在 4.3.0 及更高版本中,prisma migrate status 在以下情况下以退出代码 1 退出
- 发生数据库连接错误
migrations目录中有未应用于数据库的迁移文件migrations目录中的迁移历史记录与数据库状态不一致- 未找到迁移表
- 发现失败的迁移
选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--help / --h | 否 | 显示帮助消息 |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
prisma migrate status
migrate diff
此命令仅部分支持 MongoDB。有关详细信息,请参阅下面的命令选项。
此命令比较两个数据库 schema 源,并输出描述将第一个源迁移到第二个源状态的描述。
输出可以以人类可读的摘要(默认)或可执行脚本的形式给出。
migrate diff 命令只能比较 Prisma 支持的数据库功能。如果两个数据库仅在不支持的功能(如视图或触发器)上有所不同,则 migrate diff 将不会显示它们之间的任何差异。
命令格式为
prisma migrate diff --from-... <source1> --to-... <source2>
其中 --from-... 和 --to-... 选项根据数据库 schema 源的类型进行选择。支持的源类型是
- 活动数据库
- 迁移历史
- Prisma schema 数据模型
- 空 schema
两个 schema 源必须使用相同的数据库提供程序。例如,不支持比较 PostgreSQL 数据源和 SQLite 数据源的 diff。
另请参阅
先决条件
在使用 migrate diff 命令之前,如果您使用 --from-schema-datasource 或 --to-schema-datasource,您必须在 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'),
},
})
选项
以下 --from-... 选项之一是必需的
| 选项 | 描述 | 备注 |
|---|---|---|
--from-url | 数据源 URL | |
--from-migrations | Prisma Migrate 迁移目录的路径 | MongoDB 中不支持 |
--from-schema-datamodel | Prisma schema 文件的路径,使用数据模型进行 diff | |
--from-schema-datasource | Prisma schema 文件的路径,使用 datasource 块中的 URL 进行 diff | |
--from-empty | 假设您要从中迁移的数据模型为空 | |
--from-local-d1 | 本地 D1 实例的路径 (了解更多) | 自 5.12.0 起可用 |
以下 --to-... 选项之一是必需的
| 选项 | 描述 | 备注 |
|---|---|---|
--to-url | 数据源 URL | |
--to-migrations | Prisma Migrate 迁移目录的路径 | MongoDB 中不支持 |
--to-schema-datamodel | Prisma schema 文件的路径,使用数据模型进行 diff | |
--to-schema-datasource | Prisma schema 文件的路径,使用 datasource 块中的 URL 进行 diff | |
--to-empty | 假设您要迁移到的数据模型为空 | |
--to-local-d1 | 本地 D1 实例的路径 (了解更多) | 自 5.12.0 起可用 |
其他选项
| 选项 | 必需 | 描述 | 备注 |
|---|---|---|---|
--shadow-database-url | 否 | 影子数据库的 URL | 仅在使用 --to-migrations 或 --from-migrations 时需要 |
--script | 否 | 输出 SQL 脚本而不是默认的人类可读摘要 | MongoDB 中不支持 |
-o, --output | 否 | 写入文件而不是标准输出 | 自 5.12.1 起可用 |
--exit-code | 否 | 更改退出代码行为以指示 diff 是否为空(空:0,错误:1,非空:2)。默认行为是成功:0,错误:1。 | |
--help | 否 | 显示帮助消息。 |
示例
-
比较由其数据源 URL 指定的两个数据库,并输出默认的人类可读摘要
prisma migrate diff \
--from-url "$DATABASE_URL" \
--to-url "postgresql://login:password@localhost:5432/db2" -
将具有 URL 为
$DATABASE_URL的数据库的状态与./prisma/migrations目录中由迁移定义的 schema 进行比较,并将差异输出到脚本script.sqlprisma migrate diff \
--from-url "$DATABASE_URL" \
--to-migrations ./prisma/migrations \
--shadow-database-url $SHADOW_DATABASE_URL \
--script > script.sql
Prisma Data Platform
platform (早期访问)
platform 命令从版本 5.10.0 或更高版本开始,通过 Prisma CLI 提供对 Prisma Data Platform 的访问。
- 认证:
platform auth login: 打开浏览器窗口进行登录或帐户创建。platform auth logout: 从平台注销。platform auth show: 显示有关当前已认证用户的信息。
- 工作区管理:
platform workspace show: 列出您的帐户可用的所有工作区。
- 项目管理:
platform project show: 列出指定工作区中的所有项目。platform project create: 在指定工作区中创建新项目。platform project delete: 删除指定的项目。
- 环境管理:
platform environment show: 列出指定项目的所有环境。platform environment create: 在指定项目内创建新环境。platform environment delete: 删除指定环境。
- API 密钥管理:
platform apikey show: 列出指定环境的所有 API 密钥。platform apikey create: 为指定环境创建新的 API 密钥。platform apikey delete: 删除指定的 API 密钥。
- Prisma Accelerate:
platform accelerate enable: 为指定环境启用 Prisma Accelerate。platform accelerate disable: 为指定环境禁用 Prisma Accelerate。
您可以在此处找到带有参数的完整可用命令列表。
mcp
启动 Prisma MCP 服务器。
Studio
studio
studio 命令允许您以交互方式与数据进行交互和管理。它通过启动一个本地 Web 服务器来实现,该服务器带有一个配置了项目数据 schema 和记录的 Web 应用程序。
Prisma ORM v7 推出了更稳定的 Prisma Studio 版本,具有改进的性能和现代化的架构。
Prisma Studio 目前支持 PostgreSQL、MySQL 和 SQLite。对 CockroachDB 和 MongoDB 的支持尚不可用,但可能会在未来版本中添加。
有关详细的数据库支持信息,包括 SQLite 要求,请参阅Prisma Studio 支持的数据库。
先决条件
在使用 studio 命令之前,您必须在 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'),
},
})
选项
studio 命令识别以下选项
| 选项 | 必需 | 描述 | 默认值 |
|---|---|---|---|
-b, --browser | 否 | 自动打开 Studio 的浏览器。 | <您的默认浏览器> |
-h, --help | 否 | 显示所有可用选项并退出 | |
-p, --port | 否 | 启动 Studio 的端口号。 | 5555 |
--config | 否 | 您的 Prisma 配置文件自定义路径 | |
--url | 否 | 数据库连接字符串(覆盖 Prisma 配置中的字符串) |
参数
| 参数 | 必需 | 描述 | 默认值 |
|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma./prisma/schema.prisma |
示例
在默认端口上启动 Studio 并打开新浏览器标签页
prisma studio
在不同端口上启动 Studio 并打开新浏览器标签页
prisma studio --port 7777
启动 Studio 并打开 Firefox 标签页
prisma studio --browser firefox
启动 Studio 但不打开新浏览器标签页
prisma studio --browser none
使用自定义 Prisma 配置文件启动 Studio
prisma studio --config=./prisma.config.ts
使用直接数据库连接字符串启动 Studio
prisma studio --url="postgresql://user:password@localhost:5432/dbname"
package.json 条目选项
schema
可以通过 package.json 文件中的 prisma.schema 条目指定所需 schema.prisma 文件的路径。该路径定义了当您运行任何 CLI 命令时 Prisma CLI 应该使用的文件。支持绝对路径和相对路径。
{
"name": "my-project",
"version": "1.0.0",
"prisma": {
"schema": "./custom-path-to-schema/schema.prisma"
}
}
这从 2.7.0 及更高版本可用。
seed
用于填充数据源的命令在 package.json 文件中的 prisma.seed 条目中指定。它在调用或触发 prisma db seed 时使用。
请参阅为数据库播种
{
"name": "my-project",
"version": "1.0.0",
"prisma": {
"seed": "node ./prisma/seed.js"
}
}
这从 3.0.1 及更高版本可用。
为 CLI 使用 HTTP 代理
Prisma CLI 支持 自定义 HTTP 代理。这在企业防火墙后尤其相关。
要激活代理使用,请提供以下任一环境变量
HTTP_PROXY或http_proxy: 用于 http 流量的代理 URL,例如https://:8080HTTPS_PROXY或https_proxy: 用于 https 流量的代理 URL,例如https://:8080
npx create-db
create-db 命令通过一个命令提供临时 Prisma Postgres 数据库。这是一个独立的实用程序,可以使用 npx 调用。它非常适合快速测试、原型设计或与 Prisma Postgres 集成。
您可以运行以下变体
| 命令 | 描述 |
|---|---|
npx create-db@latest | 创建一个临时 Prisma Postgres 数据库。 |
npx create-pg@latest | npx create-db 的别名。 |
npx create-postgres@latest | npx create-db 的别名。 |
使用这些命令创建的每个数据库
- 默认情况下可供使用 24 小时。
- 可以使用 CLI 输出中显示的 URL 免费认领 以使其永久化。
有关完整使用详细信息、选项(例如 --region 和 --interactive)和示例,请参阅文档。