跳到主要內容

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將簡單的 User 模型新增至初始 Prisma schema。自版本 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 --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 檔案中定義的 generator資料模型 區塊產生 Prisma Client 等資產。

generate 命令最常用於使用 prisma-client-js 產生器產生 Prisma Client。這會執行三件事

  1. 搜尋目前目錄和父目錄以尋找適用的 npm 專案。如果找不到 package.json 檔案,它會在目前目錄中建立一個。
  2. 如果 npm 專案中尚未存在 @prisma/client,則將其安裝到該專案中。
  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 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 區塊中 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顯示說明訊息
資訊

如果在執行 prisma migrate dev 時使用 --create-only 偵測到 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。請參閱以下命令選項以了解詳細資訊。

此命令會比較兩個資料庫 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 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。
  • 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 應使用的檔案。支援絕對路徑和相對路徑。

"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 Proxy

Prisma CLI 支援自訂 HTTP Proxy。當位於公司防火牆後方時,這尤其重要。

若要啟用 Proxy 的使用,請提供以下任一環境變數

  • HTTP_PROXYhttp_proxy:用於 http 流量的 Proxy URL,例如 https://127.0.0.1:8080
  • HTTPS_PROXYhttps_proxy:用於 https 流量的 Proxy URL,例如 https://127.0.0.1:8080