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 命令不解釋任何現有檔案。相反,它在當前目錄中建立一個包含基本 schema.prisma 檔案的 prisma 目錄。
預設情況下,專案會設定一個本地 Prisma Postgres 例項,但您可以使用 --datasource-provider 選項選擇不同的資料庫。
引數
| 引數 | 必需 | 描述 | 預設 |
|---|---|---|---|
--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 | 否 | 定義自定義 datasource 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
✔ 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 dev 命令與您的本地 Prisma Postgres 例項互動(例如,執行遷移或執行查詢)。
執行 prisma init --datasource-provider sqlite
prisma init --datasource-provider sqlite
命令輸出包含有關如何使用生成的檔案以及如何開始在專案中使用 Prisma ORM 的有用資訊。
執行 prisma init --db
prisma init --db
該命令建立一個新的 Prisma Postgres 例項。請注意,它要求您透過以下方式進行身份驗證:,如果您首次執行它而未進行身份驗證,該命令將開啟瀏覽器供您登入控制檯。
執行 prisma init --prompt "Simple habit tracker application"
prisma init --prompt "Simple habit tracker application"
該命令會生成一個 Prisma schema 並將其部署到全新的 Prisma Postgres 例項。請注意,它要求您透過以下方式進行身份驗證:,如果您首次執行它而未進行身份驗證,該命令將開啟瀏覽器供您登入控制檯。
執行 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.prisma 檔案,用於定義您的 schema
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
.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"
.gitignore
一個檔案,用於指定 git 在您的專案中應忽略哪些資料夾/檔案。
node_modules
# Keep environment variables out of version control
.env
/generated/prisma
執行 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 檔案,用於定義您的 schema
// 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"
dev
dev 命令啟動一個本地 Prisma Postgres 資料庫,您可以針對該資料庫執行 Prisma ORM 命令。它對於開發和測試目的很有用,也允許您在生產環境中輕鬆切換到Prisma Postgres。Y
引數
| 引數 | 必需 | 描述 | 預設 |
|---|---|---|---|
--name (或 -n) | 否 | 啟用針對特定資料庫例項。瞭解更多。 | |
--port (或 -p) | 否 | 本地 Prisma Postgres HTTP 伺服器將監聽的主埠號。 | 51213 |
--db-port (或 -P) | 否 | 本地 Prisma Postgres 資料庫伺服器將監聽的埠號。 | 51214 |
--shadow-db-port | 否 | 影子資料庫伺服器將監聽的埠號。 | 51215 |
--debug | 否 | 啟用除錯日誌。 | false |
示例
執行 prisma dev
prisma dev
$ npx prisma dev
Fetching latest updates for this subcommand...
✔ Great Success! 😉👍
Your prisma dev server default is ready and listening on ports 63567-63569.
╭──────────────────────────────╮
│[q]uit [h]ttp url [t]cp urls│
╰──────────────────────────────╯
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,因為它阻止了引擎的下載,這將極大地影響部署到無伺服器和邊緣功能的應用程式大小。
引數
| 引數 | 必需 | 描述 | 預設 | |
|---|---|---|---|---|
--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 語言。
引數
| 引數 | 必需 | 描述 | 預設 |
|---|---|---|---|
--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 | 否 | 跳過觸發播種 | |
--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
僅限開發環境使用
此命令
- 如果可能,刪除資料庫/schema,如果環境不允許刪除資料庫/schema,則執行軟重置
- 如果資料庫/schema 被刪除,則建立同名的新資料庫/schema
- 應用所有遷移
- 執行 seed 指令碼
選項
| 選項 | 必需 | 描述 | 預設 |
|---|---|---|---|
--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 中的更改
- 不重置資料庫或生成工件
- 不依賴影子資料庫
選項
| 選項 | 必需 | 描述 | 預設 |
|---|---|---|---|
--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.sqlprisma 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。
您可以在此處找到包含引數的可用命令完整列表。
mcp
Studio
studio
studio 命令允許您互動式地與您的資料進行互動和管理。它透過啟動一個本地 Web 伺服器來實現,該伺服器的 Web 應用程式配置了您的專案資料 schema 和記錄。
先決條件
在使用 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,例如https://:8080HTTPS_PROXY或https_proxy:HTTPS 流量的代理 URL,例如https://:8080