跳转至主要内容

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 字段的值。选项为 sqlitepostgresqlmysqlsqlservermongodbcockroachdbpostgresql
--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
显示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 --preview-feature

prisma init --preview-feature multiSchema
显示Prisma 架构结果
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 架构结果
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 文件中定义的generatordata model 块生成诸如 Prisma 客户端之类的资产。

generate 命令最常用于使用 prisma-client-js 生成器生成 Prisma 客户端。这执行三项操作

  1. 搜索当前目录和父目录以查找适用的 npm 项目。如果找不到 package.json 文件,它将在当前目录中创建一个。
  2. 如果 @prisma/client 尚未存在,则将其安装到 npm 项目中。
  3. 检查当前目录以查找要处理的 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 互斥。
--accelerategenerate 命令将生成用于Prisma Accelerate 的 Prisma 客户端。与 --data-proxy--no-engine 互斥。在 Prisma 5.1.0 及更高版本中可用。
--no-enginegenerate 命令将生成没有伴随引擎的 Prisma 客户端,以与Prisma Accelerate 一起使用。与 --data-proxy--accelerate 互斥。在 Prisma ORM 5.2.0 及更高版本中可用。
--no-hintsgenerate 命令将生成 Prisma 客户端,而不会将使用提示打印到终端。在 Prisma ORM 5.16.0 及更高版本中可用。
--allow-no-modelsgenerate 命令将生成 Prisma 客户端,而无需生成任何模型。
--watchgenerate 命令将继续监视 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
显示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 客户端
prisma generate --schema=./alternative/schema.prisma
继续监视 schema.prisma 文件中的更改以自动重新生成 Prisma 客户端
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 Language

参数

参数必需描述默认
--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 文件。一些手动更改或自定义可能会丢失。在运行 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
显示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 块中指定的数据库上执行它

    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. 影子数据库 中重新运行现有的迁移历史记录,以检测架构漂移(已编辑或删除的迁移文件,或对数据库架构的手动更改)
  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 时检测到 架构漂移,系统会提示您重置数据库。

参数

参数必需描述默认
--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。有关详细信息,请参见下面的命令选项。

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

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

选项描述注意
--to-url数据源 URL
--to-migrationsPrisma Migrate 迁移目录的路径在 MongoDB 中不受支持
--to-schema-datamodelPrisma schema 文件的路径,使用数据模型进行差异比较
--to-schema-datasourcePrisma 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 应使用的文件。支持绝对路径和相对路径。

"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