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
目录。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--datasource-provider | 否 | 指定 datasource 块中 provider 字段的值。选项为 sqlite 、postgresql 、mysql 、sqlserver 、mongodb 和 cockroachdb 。 | postgresql |
--url | 否 | 定义自定义数据源 url。 | |
--generator-provider | 否 | 定义要使用的生成器提供程序。 | prisma-client-js |
--preview-feature | 否 | 定义要使用的预览功能。要定义多个预览功能,您必须为每个预览功能多次提供标志。 请参见示例 | |
--output | 否 | 指定生成客户端的输出位置。 | node_modules/.prisma/client |
--with-model | 否 | 向初始 Prisma 架构添加一个简单的 User 模型。自 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 init --datasource-provider sqlite
prisma init --datasource-provider sqlite
该命令输出包含有关如何使用生成的文件并开始将 Prisma ORM 与项目一起使用的有用信息。
运行 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
文件
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
datasource db {
provider = "sqlite"
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="file:./dev.db"
运行 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
文件
// 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"
generate
generate
命令基于 prisma/schema.prisma
文件中定义的generator
和 data model
块生成诸如 Prisma 客户端之类的资产。
generate
命令最常用于使用 prisma-client-js
生成器生成 Prisma 客户端。这执行三项操作
- 搜索当前目录和父目录以查找适用的
npm
项目。如果找不到package.json
文件,它将在当前目录中创建一个。 - 如果
@prisma/client
尚未存在,则将其安装到npm
项目中。 - 检查当前目录以查找要处理的 Prisma 架构。然后,它将为您的项目生成一个自定义的Prisma 客户端。
先决条件
要使用 generate
命令,您必须在 schema.prisma
文件中添加生成器定义。用于生成 Prisma 客户端的 prisma-client-js
生成器可以通过在您的 schema.prisma
文件中包含以下内容来添加
generator client {
provider = "prisma-client-js"
}
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--data-proxy | 否 | 在 Prisma 5.0.0 之前,generate 命令将生成用于Prisma Accelerate 的 Prisma 客户端。与 --accelerate 和 --no-engine 互斥。 | |
--accelerate | 否 | generate 命令将生成用于Prisma Accelerate 的 Prisma 客户端。与 --data-proxy 和 --no-engine 互斥。在 Prisma 5.1.0 及更高版本中可用。 | |
--no-engine | 否 | generate 命令将生成没有伴随引擎的 Prisma 客户端,以与Prisma Accelerate 一起使用。与 --data-proxy 和 --accelerate 互斥。在 Prisma ORM 5.2.0 及更高版本中可用。 | |
--no-hints | 否 | generate 命令将生成 Prisma 客户端,而不会将使用提示打印到终端。在 Prisma ORM 5.16.0 及更高版本中可用。 | |
--allow-no-models | 否 | generate 命令将生成 Prisma 客户端,而无需生成任何模型。 | |
--watch | 否 | generate 命令将继续监视 schema.prisma 文件,并在文件更改时重新生成 Prisma 客户端。 |
弃用警告
从 Prisma 5.2.0 开始,--data-proxy
和 --accelerate
已被弃用,取而代之的是 --no-engine
,因为 Prisma 客户端不再需要一个选项才能与 Prisma Accelerate 一起使用。所有选项都可用且工作方式类似,但我们建议使用 --no-engine
,因为它会阻止下载引擎,这将极大地影响部署到无服务器和边缘功能的应用程序的大小。
参数
参数 | 必需 | 描述 | 默认 | |
---|---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma , ./prisma/schema.prisma | |
--generator | 否 | 指定要用于生成资产的生成器。可以多次提供此选项以包含多个生成器。默认情况下,将运行目标架构中的所有生成器。 |
示例
使用默认 schema.prisma
路径生成 Prisma 客户端
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 客户端
prisma generate --schema=./alternative/schema.prisma
继续监视 schema.prisma
文件中的更改以自动重新生成 Prisma 客户端
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
目录中创建一个用于处理数据库的自定义客户端 - 你可以自定义输出文件夹。
introspect
弃用警告
从 Prisma ORM 3.0.0 开始,prisma introspect
命令已被弃用,并被 prisma db pull
命令取代。
validate
验证 Prisma schema 文件的 Prisma Schema Language。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--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
命令连接到您的数据库,并将 Prisma 模型添加到您的 Prisma schema 中,以反映当前的数据库 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 | 否 | 显示帮助信息 |
-- | 否 | 允许使用种子文件中定义的自定义参数 |
从 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
块中指定的数据库上执行它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
命令
- 在 影子数据库 中重新运行现有的迁移历史记录,以检测架构漂移(已编辑或删除的迁移文件,或对数据库架构的手动更改)
- 将待处理的迁移应用于影子数据库(例如,同事创建的新迁移)
- 从您在运行
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 | 否 | 显示帮助信息 |
如果在使用 --create-only
运行 prisma migrate dev
时检测到 架构漂移,系统会提示您重置数据库。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--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
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
migrate diff
命令在 3.13.0 及更高版本中正式发布。如果您使用的是 3.9.0 到 3.13.0 之间的版本,则可以使用 --preview-feature
CLI 标志。
此命令仅部分支持 MongoDB。有关详细信息,请参见下面的命令选项。
此命令比较两个数据库 schema 源,并输出一个迁移描述,将第一个迁移到第二个的状态。
输出可以以人类可读的摘要(默认)或可执行脚本的形式给出。
migrate diff
命令只能比较 Prisma 支持的数据库功能。如果两个数据库仅在不支持的功能(例如视图或触发器)上有所不同,则 migrate diff
将不会显示它们之间的任何差异。
该命令的格式为
prisma migrate diff --from-... <source1> --to-... <source2>
其中 --from-...
和 --to-...
选项是根据数据库 schema 源的类型选择的。支持的源类型为
- 实时数据库
- 迁移历史记录
- Prisma schema 数据模型
- 一个空的 schema
两个 schema 源必须使用相同的数据库提供程序。例如,不支持比较 PostgreSQL 数据源和 SQLite 数据源的差异。
另请参阅
先决条件
在使用 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 文件的路径,使用数据模型进行差异比较 | |
--from-schema-datasource | Prisma schema 文件的路径,使用 datasource 块中的 URL 进行差异比较 | |
--from-empty | 假设您要迁移的数据模型为空 | |
--from-local-d1 | 本地 D1 实例的路径(了解更多) | 自 5.12.0 起可用 |
以下 --to-...
选项之一是必需的
选项 | 描述 | 注意 |
---|---|---|
--to-url | 数据源 URL | |
--to-migrations | Prisma Migrate 迁移目录的路径 | 在 MongoDB 中不受支持 |
--to-schema-datamodel | Prisma schema 文件的路径,使用数据模型进行差异比较 | |
--to-schema-datasource | Prisma schema 文件的路径,使用 datasource 块中的 URL 进行差异比较 | |
--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 | 否 | 更改退出代码行为,以指示差异是否为空(空: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
目录中迁移定义的模式进行比较,并将差异输出到脚本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。
-
Prisma Pulse:
platform pulse enable
:为指定环境启用 Prisma Pulse。platform pulse disable
:为指定环境禁用 Prisma Pulse。
您可以在此处找到带有参数的可用命令的完整列表。
Studio
studio
studio
命令允许您以交互方式与数据进行交互和管理。它通过启动一个本地 Web 服务器,该服务器带有一个使用您项目的数据模式和记录配置的 Web 应用程序来实现此目的。
先决条件
在使用 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,例如https://127.0.0.1:8080
HTTPS_PROXY
或https_proxy
:https 流量的代理 URL,例如https://127.0.0.1:8080