跳到主要内容

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 目录。

参数

参数必需描述默认值
--datasource-provider指定 datasource 块中 provider 字段的值。选项包括 prisma+postgressqlitepostgresqlmysqlsqlservermongodbcockroachdbpostgresql
--db--datasource-provider prisma+postgres 的简写语法;创建一个新的 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
显示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 init --datasource-provider sqlite
prisma init --datasource-provider sqlite

命令输出包含有关如何使用生成的文件并开始将 Prisma ORM 与项目结合使用的有用信息。

运行 prisma init --db
prisma init --db

该命令创建一个新的 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 的初始 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 文件中定义的 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-proxygenerate 命令将生成 Prisma Client 以与 Prisma 5.0.0 之前的 Prisma Accelerate 一起使用。与 --accelerate--no-engine 互斥。
--accelerategenerate 命令将生成 Prisma Client 以与 Prisma Accelerate 一起使用。与 --data-proxy--no-engine 互斥。在 Prisma 5.1.0 及更高版本中可用。
--no-enginegenerate 命令将生成 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。
警告

弃用警告

从 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 目录中的数据库上工作 - 您可以自定义输出文件夹

introspect

警告

弃用警告
从 Prisma ORM 3.0.0 开始,prisma introspect 命令已弃用,并替换为 prisma db pull 命令。

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

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

信息

这从 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 命令连接到您的数据库,并将 Prisma 模型添加到您的 Prisma schema 中,以反映当前的数据库 schema。

警告

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

信息

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显示帮助信息
--允许使用种子文件中定义的自定义参数

-- 参数/ 分隔符/ 双破折号从 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
--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)。

信息

不适用于 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)
警告

此命令在 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显示帮助信息
信息

如果在使用 --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

仅在开发环境中使用

此命令

  1. 如果可能,删除数据库/schema,或者如果环境不允许删除数据库/schema,则执行软重置
  2. 如果数据库/schema 已删除,则使用相同的名称创建新的数据库/schema
  3. 应用所有迁移
  4. 运行种子脚本
警告

此命令在 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 中的更改
  • 重置数据库或生成工件
  • 依赖影子数据库
警告

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

选项

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

参数

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

示例

prisma migrate deploy

migrate resolve

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

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

警告

此命令在 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 表中的条目,并编译有关数据库中迁移状态的信息。

警告

此命令在 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

信息

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-migrationsPrisma Migrate 迁移目录的路径MongoDB 中不支持
--from-schema-datamodelPrisma 模式文件的路径,使用数据模型进行差异比较
--from-schema-datasourcePrisma 模式文件的路径,使用 datasource 块中的 URL 进行差异比较
--from-empty假设您要从中迁移的数据模型为空
--from-local-d1本地 D1 实例的路径(了解更多5.12.0 起可用

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

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

其他选项

选项必需描述注释
--shadow-database-url影子数据库的 URL仅在使用 --to-migrations--from-migrations 时需要
--script输出 SQL 脚本,而不是默认的人类可读摘要MongoDB 中不支持
-o, --output写入文件而不是 stdout5.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 Data Platform

platform抢先体验

platform 命令允许您通过 Prisma CLI 访问 Prisma Data Platform,版本要求 5.10.0 或更高版本。

  • 身份验证:

    • 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, --portStudio 启动的端口号。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,例如 https://127.0.0.1:8080
  • HTTPS_PROXYhttps_proxy:https 流量的代理 URL,例如 https://127.0.0.1:8080