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-js |
--preview-feature | 否 | 定义要使用的预览功能。要定义多个预览功能,您必须为每个预览功能多次提供该标志。请参见示例。 | |
--output | 否 | 指定生成客户端的输出位置。 | node_modules/.prisma/client |
--with-model | 否 | 将一个简单的 User 模型添加到初始 Prisma schema。从版本 5.14.0 开始可用。 |
示例
运行 prisma init
prisma init
✔ 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
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
previewFeatures = ["multiSchema"]
}
prisma init --preview-feature multiSchema --preview-feature metrics
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
$ 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
文件中定义的 generator
和 data model
块生成 Prisma Client 等资产。
generate
命令最常用于使用 prisma-client-js
生成器生成 Prisma Client。它执行以下三件事:
- 搜索当前目录及其父目录以查找适用的
npm
项目。如果找不到package.json
文件,它将在当前目录中创建一个。 - 如果 `@prisma/client` 尚未存在,则将其安装到 `npm` 项目中。
- 检查当前目录以查找要处理的 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-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/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-js
生成器默认在 ./node_modules/.prisma/client
目录中创建一个自定义客户端,用于与您的数据库交互 - 您可以自定义输出文件夹。
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
打印用于调试和错误报告的信息。
这在 5.6.0 及更高版本中可用。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--schema | 否 | 指定要处理的 `schema.prisma` 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma , ./prisma/schema.prisma |
--help / --h | 否 | 显示帮助信息 |
示例
prisma debug
如果您使用的是 Prisma 的旧版本,可以通过运行此命令来使用它
npx prisma@latest debug
db
db pull
db pull
命令连接到您的数据库,并将反映当前数据库 schema 的 Prisma 模型添加到您的 Prisma schema 中。
警告:该命令将用新 schema 覆盖当前的 schema.prisma
文件。一些手动更改或自定义可能会丢失。在运行 db pull
之前,请务必备份当前的 schema.prisma
文件(或将当前状态提交到版本控制以能够恢复任何更改),如果其中包含重要修改。
在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
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-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
db execute
命令在 3.13.0 及更高版本中通常可用。如果您使用的是 3.9.0 到 3.13.0 之间的版本,它可以通过 --preview-feature
CLI 标志使用。
此命令目前不支持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 |
--schema | Prisma 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)。
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
- 应用所有迁移
- 运行 seed 脚本
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--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 中的更改
- 不重置数据库或生成工件
- 不依赖影子数据库
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--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
,则必须在 schema.prisma
文件中定义一个有效的datasource
。
例如,以下 datasource
定义了当前目录中的 SQLite 数据库文件
datasource db {
provider = "sqlite"
url = "file:my-database.db"
}
选项
以下 --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.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
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 应使用的文件。支持绝对路径和相对路径。
{
"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,例如http://localhost:8080
HTTPS_PROXY
或https_proxy
:HTTPS 流量的代理 URL,例如https://localhost:8080