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
目錄。
引數
引數 | 是否必填 | 描述 | 預設值 |
---|---|---|---|
--datasource-provider | 否 | 指定 datasource 區塊中 provider 欄位的值。選項為 prisma+postgres 、sqlite 、postgresql 、mysql 、sqlserver 、mongodb 和 cockroachdb 。 | postgresql |
--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
✔ 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
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 的初始 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。這會執行三件事
- 搜尋目前目錄和父目錄以尋找適用的
npm
專案。如果找不到package.json
檔案,它會在目前目錄中建立一個。 - 如果
npm
專案中尚未存在@prisma/client
,則將其安裝到該專案中。 - 檢查目前目錄以尋找要處理的 Prisma Schema。然後,它會為您的專案產生自訂的 Prisma Client。
先決條件
若要使用 generate
命令,您必須在 schema.prisma
檔案中新增產生器定義。用於產生 Prisma Client 的 prisma-client-js
產生器可以透過在您的 schema.prisma
檔案中包含以下內容來新增
generator client {
provider = "prisma-client-js"
}
選項
選項 | 是否必填 | 描述 | 預設值 |
---|---|---|---|
--data-proxy | 否 | generate 命令將產生 Prisma Client 以與早於 Prisma 5.0.0 的 Prisma Accelerate 搭配使用。與 --accelerate 和 --no-engine 互斥。 | |
--accelerate | 否 | generate 命令將產生 Prisma Client 以與 Prisma Accelerate 搭配使用。與 --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
目錄中與您的資料庫搭配使用 - 您可以自訂輸出資料夾。
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
驗證具有驗證錯誤的 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
命令連線到您的資料庫,並將 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
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 | 否 | 顯示說明訊息 |
-- | 否 | 允許使用種子資料檔案中定義的自訂引數 |
--
引數/ 分隔符號/ 雙破折號在 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
- 套用所有遷移
- 執行種子資料腳本
選項
選項 | 是否必填 | 描述 | 預設值 |
---|---|---|---|
--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
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-migrations | Prisma Migrate 遷移目錄的路徑 | MongoDB 中不支援 |
--from-schema-datamodel | Prisma schema 檔案的路徑,使用資料模型進行差異比較 | |
--from-schema-datasource | Prisma schema 檔案的路徑,使用 datasource 區塊中的 URL 進行差異比較 | |
--from-empty | 假設您要從空的資料模型遷移 | |
--from-local-d1 | 本機 D1 執行個體的路徑 (了解更多資訊) | 自 5.12.0 版本起可用 |
以下 --to-...
選項為必要選項之一
選項 | 描述 | 備註 |
---|---|---|
--to-url | 資料來源 URL | |
--to-migrations | Prisma Migrate 遷移目錄的路徑 | MongoDB 中不支援 |
--to-schema-datamodel | Prisma schema 檔案的路徑,使用資料模型進行差異比較 | |
--to-schema-datasource | Prisma 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 應使用的檔案。支援絕對路徑和相對路徑。
{
"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 Proxy
Prisma CLI 支援自訂 HTTP Proxy。當位於公司防火牆後方時,這尤其重要。
若要啟用 Proxy 的使用,請提供以下任一環境變數
HTTP_PROXY
或http_proxy
:用於 http 流量的 Proxy URL,例如https://127.0.0.1:8080
HTTPS_PROXY
或https_proxy
:用於 https 流量的 Proxy URL,例如https://127.0.0.1:8080