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 | 否 | 将一个简单的 User 模型添加到初始 Prisma 架构中。从版本 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 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
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 Client)。
generate
命令最常用于使用 prisma-client-js
生成器生成 Prisma Client。它执行以下三个操作
- 搜索当前目录及其父目录以找到适用的
npm
项目。如果找不到,它将在当前目录中创建一个package.json
文件。 - 如果
@prisma/client
不存在,则将其安装到npm
项目中。 - 检查当前目录以找到要处理的 Prisma 架构。然后,它会为您项目生成一个定制的 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.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
目录中创建了一个用于与数据库交互的自定义客户端 - 你可以 自定义输出文件夹。
introspect
弃用警告
从 Prisma ORM 3.0.0 开始,prisma introspect
命令已弃用,并被 prisma db pull
命令取代。
validate
验证 Prisma 模式文件中的 Prisma 模式语言。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma , ./prisma/schema.prisma |
示例
验证没有错误的模式
prisma validate
验证带有验证错误的模式
prisma validate
format
格式化 Prisma 模式文件,包括验证、格式化和持久化模式。
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma , ./prisma/schema.prisma |
--check | 否 | 如果任何文件未格式化则失败。这可以在 CI 中使用,以检测模式是否正确格式化 |
示例
验证没有错误的模式
prisma format
格式化带有验证错误的模式
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.prisma
文件。一些手动更改或自定义可能会丢失。在运行 db pull
之前,请务必备份你当前的 schema.prisma
文件(或者将你当前的状态提交到版本控制,以便能够恢复任何更改),因为它可能包含重要的修改。
在 MongoDB 连接器 上使用 db pull
命令进行内省会对数据进行采样,而不是读取模式。
先决条件
在使用 db pull
命令之前,你必须在你的 schema.prisma
文件中定义一个有效的 datasource
。
例如,以下 datasource
在当前目录中定义了一个 SQLite 数据库文件
datasource db {
provider = "sqlite"
url = "file:my-database.db"
}
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--force | 否 | 强制覆盖对模式所做的手动更改。生成的模式将仅基于内省的模式。 | |
--print | 否 | 将创建的 schema.prisma 打印到屏幕上,而不是写入文件系统。 |
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma , ./prisma/schema.prisma |
示例
分析数据库并将它的模式写入 schema.prisma
文件
prisma db pull
Introspecting based on datasource defined in schema.prisma …
✔ Introspected 2 models and wrote them into schema.prisma in 38ms
Run prisma generate to generate Prisma Client.
指定一个可选的 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 模式的状态推送到数据库,而不使用迁移。如果数据库不存在,它将创建数据库。
当你不必对模式更改进行版本控制时,例如在原型设计和本地开发期间,此命令是一个不错的选择。
另请参阅
先决条件
在使用 db push
命令之前,你必须在你的 schema.prisma
文件中定义一个有效的 datasource 。
例如,以下 datasource
在当前目录中定义了一个 SQLite 数据库文件
datasource db {
provider = "sqlite"
url = "file:my-database.db"
}
选项
选项 | 必需 | 描述 |
---|---|---|
--skip-generate | 否 | 跳过生成工件,例如 Prisma Client |
--force-reset | 否 | 重置数据库,然后更新模式 - 如果你需要从头开始(由于迁移无法执行)时非常有用。 |
--accept-data-loss | 否 | 忽略数据丢失警告。如果由于进行模式更改而可能导致数据丢失,则需要此选项。 |
--help / --h | 否 | 显示帮助信息 |
参数
参数 | 必需 | 描述 | 默认 |
---|---|---|---|
--schema | 否 | 指定要处理的所需 schema.prisma 文件的路径,而不是默认路径。支持绝对路径和相对路径。 | ./schema.prisma ./prisma/schema.prisma |
示例
推送模式
prisma db push
推送模式,接受数据丢失
prisma db push --accept-data-loss
使用自定义模式位置推送模式
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 模式文件的路径
该命令的输出是连接器特定的,它并非用于返回数据,而仅用于报告成功或失败。
另请参阅
先决条件
在使用 db execute
命令之前,如果你不使用 --url
选项,你必须在你的 schema.prisma
文件中定义一个有效的 datasource
。
例如,以下 datasource
在当前目录中定义了一个 SQLite 数据库文件
datasource db {
provider = "sqlite"
url = "file:my-database.db"
}
选项
以下数据源输入之一是必需的
选项 | 描述 |
---|---|
--url | 要运行命令的数据源的 URL |
--schema | Prisma 模式文件的路径,使用 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
命令
- 重新运行影子数据库中的现有迁移历史记录,以检测模式漂移(已编辑或删除的迁移文件,或对数据库模式的手动更改)。
- 将待处理的迁移应用于影子数据库(例如,同事创建的新迁移)。
- 在运行
migrate dev
之前,从您对 Prisma 模式所做的任何更改中生成新的迁移。 - 将所有未应用的迁移应用于开发数据库并更新
_prisma_migrations
表。 - 触发工件的生成(例如,Prisma Client)。
另请参阅
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--create-only | 否 | 创建新的迁移,但不应用它。即使您没有对模式进行任何更改,这也适用(在这种情况下,将创建空迁移)。运行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
应用所有迁移,如果存在模式更改,则创建新的迁移,但不应用它
prisma migrate dev --create-only
migrate reset
仅供开发环境使用
此命令
- 如果可能,删除数据库/模式,或者如果环境不允许删除数据库/模式,则执行软重置
- 如果数据库/模式已删除,则使用相同的名称创建新的数据库/模式
- 应用所有迁移
- 运行种子脚本
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--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 模式中的更改
- 不重置数据库或生成工件
- 不依赖影子数据库
选项
选项 | 必需 | 描述 | 默认 |
---|---|---|---|
--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。有关详细信息,请参见下面的命令选项。
此命令比较两个数据库模式源并输出将第一个带到第二个状态的迁移的描述。
输出可以以人类可读的摘要(默认值)或可执行脚本的形式给出。
migrate diff
命令只能比较Prisma 支持的数据库功能。如果两个数据库仅在不受支持的功能(例如视图或触发器)上有所不同,则migrate diff
将不会显示它们之间的任何差异。
命令的格式为
prisma migrate diff --from-... <source1> --to-... <source2>
其中--from-...
和--to-...
选项根据数据库模式源的类型进行选择。支持的源类型为
- 实时数据库
- 迁移历史记录
- Prisma 模式数据模型
- 空模式
两个模式源必须使用相同的数据库提供程序。例如,不支持比较 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 模式文件的路径,使用数据模型进行差异 | |
--from-schema-datasource | Prisma 模式文件的路径,使用datasource 块中的 URL 进行差异 | |
--from-empty | 假设您要迁移的的数据模型为空 | |
--from-local-d1 | 本地 D1 实例的路径(了解更多) | 自5.12.0起可用 |
以下--to-...
选项之一是必需的
选项 | 描述 | 说明 |
---|---|---|
--to-url | 数据源 URL | |
--to-migrations | Prisma Migrate 迁移目录的路径 | 在 MongoDB 中不受支持 |
--to-schema-datamodel | Prisma 模式文件的路径,使用数据模型进行差异 | |
--to-schema-datasource | Prisma 模式文件的路径,使用datasource 块中的 URL 进行差异 | |
--to-empty | 假设您要迁移到的数据模型为空 | |
--to-local-d1 | 本地 D1 实例的路径(了解更多) | 自5.12.0起可用 |
其他选项
选项 | 必需 | 描述 | 说明 |
---|---|---|---|
--shadow-database-url | 否 | 影子数据库的 URL | 仅在使用--to-migrations 或--from-migrations 时才需要 |
--script | 否 | 输出 SQL 脚本而不是默认的人类可读摘要 | 在 MongoDB 中不受支持 |
-o , --output | 否 | 写入文件而不是 stdout | 自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 加速:
platform accelerate enable
: 为指定环境启用 Prisma 加速。platform accelerate disable
: 为指定环境禁用 Prisma 加速。
-
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
可以通过 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://127.0.0.1:8080
HTTPS_PROXY
或https_proxy
: https 流量的代理 URL,例如https://127.0.0.1:8080