跳至主要内容

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 命令不解释任何现有文件。相反,它会在当前目录中创建一个 prisma 目录,其中包含一个骨架 schema.prisma 文件。

参数

参数必需描述默认值
--datasource-provider指定 datasource 块中 provider 字段的值。选项包括 prisma+postgres, sqlite, postgresql, mysql, sqlserver, mongodbcockroachdbpostgresql
--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
显示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 实例。请注意,它要求您使用进行身份验证。如果您在未进行身份验证的情况下首次运行此命令,它将打开浏览器供您登录 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
显示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-proxy在 Prisma 5.0.0 之前,generate 命令将生成用于 Prisma Accelerate 的 Prisma Client。与 --accelerate--no-engine 互斥。
--accelerategenerate 命令将生成用于 Prisma Accelerate 的 Prisma Client。与 --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,因为它会阻止下载引擎,从而显著影响部署到 Serverless 和 Edge 函数的应用程序的大小。

参数

参数必需描述默认值
--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 目录中为您与数据库交互创建自定义客户端 - 您可以自定义输出文件夹

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 命令连接到您的数据库,并将反映当前数据库 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
显示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显示帮助消息
--允许使用 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
--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跳过触发 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. 运行 seed 脚本
警告

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

选项

选项必需描述默认值
--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 中的更改
  • 不重置数据库或生成构建产物
  • 不依赖影子数据库
警告

此命令不支持 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

信息

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

需要以下 --to-... 选项之一

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

启动 Prisma MCP server

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 应该使用的文件。支持绝对路径和相对路径。

"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,例如 http://localhost:8080
  • HTTPS_PROXYhttps_proxy:用于 https 流量的代理 URL,例如 https://localhost:8080