跳到主要内容

Prisma CLI 参考

本文档描述了 Prisma CLI 命令、参数和选项。

命令

version (-v)

version 命令输出有关您当前 prisma 版本、平台和引擎二进制文件的信息。

选项

version 命令识别以下选项来修改其行为

选项必需描述
--json以 JSON 格式输出版本信息。

示例

输出版本信息
prisma version
显示CLI结果
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
显示CLI结果
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
显示CLI结果
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+postgressqlitepostgresqlmysqlsqlservermongodbcockroachdbpostgresql
--db--datasource-provider prisma+postgres 的简写语法;创建一个新的Prisma Postgres 实例。需要在.
--prompt (或 --vibe)根据提示脚手架化 Prisma schema 并将其部署到新的 Prisma Postgres 实例。需要在.
--url定义自定义 datasource URL。
--generator-provider定义要使用的生成器提供者。prisma-client-js
--preview-feature定义要使用的预览功能。要定义多个预览功能,您必须为每个预览功能多次提供该标志。请参见示例。
--output指定生成客户端的输出位置node_modules/.prisma/client
--with-model将一个简单的 User 模型添加到初始 Prisma schema。从版本 5.14.0 开始可用。

示例

运行 prisma init

prisma init
显示CLI结果
✔ Your Prisma schema was created at prisma/schema.prisma.
You can now open it in your favorite editor.

Next steps:
1. Set the DATABASE_URL in the .env file to point to your existing database. If your database has no tables yet, read https://pris.ly/d/getting-started
2. Set the provider of the datasource block in schema.prisma to match your database: postgresql, mysql, sqlite, sqlserver, mongodb or cockroachdb.
3. Run prisma db pull to turn your database schema into a Prisma schema.
4. Run prisma generate to generate Prisma Client. You can then start querying your database.

More information in our documentation:
https://pris.ly/d/getting-started

接下来,运行 prisma dev 命令与您的本地 Prisma Postgres 实例交互(例如,运行迁移或执行查询)。

运行 prisma init --datasource-provider sqlite

prisma init --datasource-provider sqlite

命令输出包含有关如何使用生成的文件以及如何开始在项目中使用 Prisma ORM 的有用信息。

运行 prisma init --db

prisma init --db

该命令创建一个新的 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 multiSchema
显示Prisma schema结果
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

generator client {
provider = "prisma-client-js"
previewFeatures = ["multiSchema"]
}
prisma init --preview-feature multiSchema --preview-feature metrics
显示Prisma schema结果
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

generator client {
provider = "prisma-client-js"
previewFeatures = ["multiSchema", "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-js"
output = "../generated/prisma"
}

datasource db {
provider = "postgresql"
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="file:./dev.db"

.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"
url = env("DATABASE_URL")
}

generator client {
provider = "prisma-client-js"
}

.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"

dev

dev 命令启动一个本地 Prisma Postgres 数据库,您可以针对该数据库运行 Prisma ORM 命令。它对于开发和测试目的很有用,也允许您在生产环境中轻松切换到Prisma Postgres。Y

参数

参数必需描述默认
--name (或 -n)启用针对特定数据库实例。了解更多
--port (或 -p)本地 Prisma Postgres HTTP 服务器将监听的主端口号。51213
--db-port (或 -P)本地 Prisma Postgres 数据库服务器将监听的端口号。51214
--shadow-db-port影子数据库服务器将监听的端口号。51215
--debug启用调试日志。false

示例

运行 prisma dev

prisma dev
显示CLI结果
$ 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│
╰──────────────────────────────╯

generate

generate 命令根据 prisma/schema.prisma 文件中定义的 generatordata model 块生成 Prisma Client 等资产。

generate 命令最常用于使用 prisma-client-js 生成器生成 Prisma Client。它执行以下三件事:

  1. 搜索当前目录及其父目录以查找适用的 npm 项目。如果找不到 package.json 文件,它将在当前目录中创建一个。
  2. 如果 `@prisma/client` 尚未存在,则将其安装到 `npm` 项目中。
  3. 检查当前目录以查找要处理的 Prisma Schema。然后,它将为您的项目生成一个自定义的 Prisma Client

先决条件

要使用 generate 命令,您必须在 schema.prisma 文件中添加生成器定义。用于生成 Prisma Client 的 prisma-client-js 生成器可以通过在 schema.prisma 文件中包含以下内容来添加:

generator client {
provider = "prisma-client-js"
}

选项

选项必需描述默认
--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-hintsgenerate 命令将生成 Prisma Client,但不会在终端上打印使用提示、调查或信息横幅。在 Prisma ORM 5.16.0 及更高版本中可用。
--allow-no-modelsgenerate 命令将生成 Prisma Client,但不会生成任何模型。
--watchgenerate 命令将继续监视 schema.prisma 文件,并在文件更改时重新生成 Prisma Client。
warning

弃用警告

从 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
显示CLI结果
✔ Generated Prisma Client to ./node_modules/.prisma/client in 61ms

You can now start using Prisma Client in your code:

import { PrismaClient } from '@prisma/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
显示CLI结果
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-js 生成器默认在 ./node_modules/.prisma/client 目录中创建一个自定义客户端,用于与您的数据库交互 - 您可以自定义输出文件夹

validate

验证 Prisma schema 文件的Prisma Schema 语言

参数

参数必需描述默认
--schema指定要处理的 `schema.prisma` 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma, ./prisma/schema.prisma

示例

验证无错误的 schema
prisma validate
显示CLI结果
验证带验证错误的 schema
prisma validate
显示CLI结果

format

格式化 Prisma schema 文件,包括验证、格式化和持久化 schema。

参数

参数必需描述默认
--schema指定要处理的 `schema.prisma` 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma, ./prisma/schema.prisma
--check如果有任何文件未格式化,则失败。这可以在 CI 中用于检测 schema 是否已正确格式化

示例

验证无错误的 schema
prisma format
显示CLI结果
格式化带验证错误的 schema
prisma format
显示CLI结果

debug

打印用于调试和错误报告的信息。

info

这在 5.6.0 及更高版本中可用。

参数

参数必需描述默认
--schema指定要处理的 `schema.prisma` 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma, ./prisma/schema.prisma
--help / --h显示帮助信息

示例

prisma debug
显示CLI结果

如果您使用的是 Prisma 的旧版本,可以通过运行此命令来使用它

npx prisma@latest debug

db

db pull

db pull 命令连接到您的数据库,并将反映当前数据库 schema 的 Prisma 模型添加到您的 Prisma schema 中。

warning

警告:该命令将用新 schema 覆盖当前的 schema.prisma 文件。一些手动更改或自定义可能会丢失。在运行 db pull 之前,请务必备份当前的 schema.prisma 文件(或将当前状态提交到版本控制以能够恢复任何更改),如果其中包含重要修改。

info

MongoDB 连接器上使用 db pull 命令进行内省会采样数据而不是读取 schema。

先决条件

在使用 db pull 命令之前,您必须在 schema.prisma 文件中定义一个有效的datasource

例如,以下 datasource 定义了当前目录中的 SQLite 数据库文件

datasource db {
provider = "sqlite"
url = "file:my-database.db"
}

选项

选项必需描述默认
--force强制覆盖对 schema 进行的手动更改。生成的 schema 将仅基于内省的 schema。
--print将创建的 schema.prisma 打印到屏幕而不是写入文件系统。

参数

参数必需描述默认
--schema指定要处理的 `schema.prisma` 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma, ./prisma/schema.prisma

示例

分析数据库并将其 schema 写入 schema.prisma 文件
prisma db pull
显示CLI结果
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
显示CLI结果
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
显示CLI结果
generator client {
provider = "prisma-client-js"
}

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 命令之前,您必须在 schema.prisma 文件中定义一个有效的 datasource

例如,以下 datasource 定义了当前目录中的 SQLite 数据库文件

datasource db {
provider = "sqlite"
url = "file:my-database.db"
}

选项

选项必需描述
--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显示帮助信息
--允许使用 seed 文件中定义的自定义参数

-- 参数/分隔符/双破折号从 4.15.0 版或更高版本开始可用。

示例

prisma db seed

db execute

info

db execute 命令在 3.13.0 及更高版本中通常可用。如果您使用的是 3.9.0 到 3.13.0 之间的版本,它可以通过 --preview-feature CLI 标志使用。

warning

此命令目前不支持MongoDB

此命令将 SQL 脚本应用于数据库,而不与 Prisma 迁移表交互。该脚本接受两个输入:

  • SQL 脚本,可以通过标准输入或文件中提供
  • 数据源,可以是数据源的 URL 或 Prisma schema 文件的路径

命令的输出是连接器特定的,并非用于返回数据,而仅用于报告成功或失败。

另请参见

先决条件

在使用 db execute 命令之前,如果您不使用 --url 选项,则必须在 schema.prisma 文件中定义一个有效的datasource

例如,以下 datasource 定义了当前目录中的 SQLite 数据库文件

datasource db {
provider = "sqlite"
url = "file:my-database.db"
}

选项

需要以下数据源输入之一

选项描述
--url要运行命令的数据源 URL
--schemaPrisma schema 文件的路径,使用 datasource 块中的 URL

需要以下脚本输入之一

选项描述
--stdin使用终端标准输入作为要执行的脚本
--file文件路径。内容将作为要执行的脚本发送

其他选项

选项必需描述
--help显示帮助信息。

示例

  • 获取位于 ./script.sql 的 SQL 文件的内容,并在 schema.prisma 文件的 datasource 块中指定的 URL 数据库上执行它

    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)。

info

不适用于 MongoDB
对于MongoDB,使用db push 而不是 migrate dev 及相关命令。

migrate dev

仅限开发环境使用,需要影子数据库

migrate dev 命令

  1. 影子数据库中重新运行现有迁移历史,以检测 schema 漂移(编辑或删除的迁移文件,或对数据库 schema 的手动更改)
  2. 将待处理的迁移应用于影子数据库(例如,同事创建的新迁移)
  3. 在运行 migrate dev 之前,从您对 Prisma schema 所做的任何更改生成新的迁移
  4. 将所有未应用的迁移应用于开发数据库并更新 _prisma_migrations
  5. 触发工件生成(例如,Prisma Client)
warning

此命令不支持MongoDB。请改用db push

另请参见

选项

选项必需描述默认
--create-only创建新的迁移但不应用它。即使您没有对 schema 进行任何更改,这也有效(在这种情况下,会创建一个空迁移)。运行 migrate dev 以应用迁移。
--skip-seed跳过触发播种
--skip-generate跳过触发生成器(例如,Prisma Client)
--name / -n命名迁移(例如 prisma migrate dev --name added_job_title
--help / -h显示帮助信息
info

如果在运行 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

仅限开发环境使用

此命令

  1. 如果可能,删除数据库/schema,如果环境不允许删除数据库/schema,则执行软重置
  2. 如果数据库/schema 被删除,则创建同名的新数据库/schema
  3. 应用所有迁移
  4. 运行 seed 脚本
warning

此命令不支持MongoDB。请改用db push

选项

选项必需描述默认
--force跳过确认提示
--skip-generate跳过触发生成器(例如,Prisma Client)
--skip-seed跳过触发播种
--help / --h显示帮助信息

参数

参数必需描述默认
--schema指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma
./prisma/schema.prisma

示例

prisma migrate reset

migrate deploy

migrate deploy 命令应用所有待处理的迁移,并在数据库不存在时创建数据库。主要用于非开发环境。此命令

  • 查找数据库中的漂移或 Prisma schema 中的更改
  • 重置数据库或生成工件
  • 依赖影子数据库
warning

此命令不支持MongoDB。请改用db push

选项

选项必需描述默认
--help / --h显示帮助信息

参数

参数必需描述默认
--schema指定要处理的 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。./schema.prisma
./prisma/schema.prisma

示例

prisma migrate deploy

migrate resolve

migrate resolve 命令允许您通过将失败的迁移标记为已应用(支持基线)或回滚来解决生产中的迁移历史问题。

请注意,此命令只能用于失败的迁移。如果您尝试将其用于成功的迁移,则会收到错误。

warning

此命令不支持MongoDB。请改用db push

选项

选项必需描述默认
--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 表中的条目,并编译有关数据库中迁移状态的信息。

warning

此命令不支持MongoDB。请改用db push

例如

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

info

此命令仅部分支持MongoDB。详情请参阅下面的命令选项。

此命令比较两个数据库 schema 源,并输出一个描述从第一个源迁移到第二个源状态的描述。

输出可以是人类可读的摘要(默认)或可执行脚本。

warning

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,则必须在 schema.prisma 文件中定义一个有效的datasource

例如,以下 datasource 定义了当前目录中的 SQLite 数据库文件

datasource db {
provider = "sqlite"
url = "file:my-database.db"
}

选项

以下 --from-... 选项之一是必需的

选项描述备注
--from-url数据源 URL
--from-migrationsPrisma Migrate 迁移目录的路径MongoDB 不支持
--from-schema-datamodelPrisma schema 文件的路径,使用数据模型进行 diff
--from-schema-datasourcePrisma schema 文件的路径,使用 datasource 块中的 URL 进行 diff
--from-empty假设您要从中迁移的数据模型是空的
--from-local-d1本地 D1 实例的路径(了解更多5.12.0 起可用

以下 --to-... 选项之一是必需的

选项描述备注
--to-url数据源 URL
--to-migrationsPrisma Migrate 迁移目录的路径MongoDB 不支持
--to-schema-datamodelPrisma schema 文件的路径,使用数据模型进行 diff
--to-schema-datasourcePrisma 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.sql

    prisma migrate diff \
    --from-url "$DATABASE_URL" \
    --to-migrations ./prisma/migrations \
    --shadow-database-url $SHADOW_DATABASE_URL \
    --script > script.sql

Prisma 数据平台

platform (早期访问)

platform 命令从 5.10.0 或更高版本开始,通过 Prisma CLI 提供对 Prisma 数据平台的访问。

  • 身份验证:
    • 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 服务器来实现,该服务器的 Web 应用程序配置了您的项目数据 schema 和记录。

先决条件

在使用 studio 命令之前,您必须在 schema.prisma 文件中定义一个有效的datasource

例如,以下 datasource 定义了当前目录中的 SQLite 数据库文件

datasource db {
provider = "sqlite"
url = "file:my-database.db"
}

选项

studio 命令识别以下选项

选项必需描述默认
-b, --browser自动打开 Studio 的浏览器。<您的默认浏览器>
-h, --help显示所有可用选项并退出
-p, --port启动 Studio 的端口号。5555

参数

参数必需描述默认
--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

package.json 入口选项

schema

所需 schema.prisma 文件的路径可以在 package.json 文件中的 prisma.schema 入口中指定。该路径定义了当您运行任何 CLI 命令时 Prisma CLI 应使用的文件。支持绝对路径和相对路径。

"package.json"
{
"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 时会使用它。

参见为您的数据库播种

"package.json"
{
"name": "my-project",
"version": "1.0.0",
"prisma": {
"seed": "node ./prisma/seed.js"
}
}

这在 3.0.1 及更高版本中可用。

为 CLI 使用 HTTP 代理

Prisma CLI 支持自定义 HTTP 代理。这在企业防火墙后面时尤为重要。

要启用代理使用,请提供以下任一环境变量:

  • HTTP_PROXYhttp_proxy:HTTP 流量的代理 URL,例如 http://localhost:8080
  • HTTPS_PROXYhttps_proxy:HTTPS 流量的代理 URL,例如 https://localhost:8080
© . All rights reserved.