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
命令不解释任何现有文件。相反,它会在当前目录中创建一个 prisma
目录,其中包含一个骨架 schema.prisma
文件。
参数
参数 | 必需 | 描述 | 默认值 |
---|---|---|---|
--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 | 否 | 定义自定义数据源 URL。 | |
--generator-provider | 否 | 定义要使用的生成器提供者。 | prisma-client-js |
--preview-feature | 否 | 定义要使用的预览特性。要定义多个预览特性,您必须为每个预览特性多次提供此标志。请参阅示例。 | |
--output | 否 | 指定生成的客户端的输出位置。 | node_modules/.prisma/client |
--with-model | 否 | 向初始 Prisma schema 添加一个简单的 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 --db
prisma init --db
此命令创建一个新的 Prisma Postgres 实例。请注意,它要求您使用进行身份验证。如果您在未进行身份验证的情况下首次运行此命令,它将打开浏览器供您登录 Console。
运行 prisma init --prompt "Simple habit tracker application"
prisma init --prompt "Simple habit tracker application"
此命令构建 Prisma schema 并将其部署到全新的 Prisma Postgres 实例。请注意,它要求您使用进行身份验证。如果您在未进行身份验证的情况下首次运行此命令,它将打开浏览器供您登录 Console。
运行 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 的初始 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 的最小 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 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
,因为它会阻止下载引擎,从而显著影响部署到 Serverless 和 Edge 函数的应用程序的大小。
参数
参数 | 必需 | 描述 | 默认值 | |
---|---|---|---|---|
--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 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
命令连接到您的数据库,并将反映当前数据库 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 | 否 | 跳过触发 seed | |
--skip-generate | 否 | 跳过触发生成器(例如,Prisma Client) | |
--name / -n | 否 | 命名迁移(例如 prisma migrate dev --name added_job_title ) | |
--help / -h | 否 | 显示帮助消息 |
如果在运行带有 --create-only
选项的 prisma migrate dev
时检测到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 | 否 | 跳过触发 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 Data Platform
platform
(抢先体验)
从版本 5.10.0
或更高版本开始,platform
命令通过 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
Studio
studio
studio
命令允许您交互式地与您的数据进行交互和管理。它通过启动一个本地 Web 服务器来实现,该服务器带有一个配置了您的项目数据 schema 和记录的 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,例如http://localhost:8080
HTTPS_PROXY
或https_proxy
:用于 https 流量的代理 URL,例如https://localhost:8080