跳到主要內容

錯誤訊息參考

如需更多關於如何使用例外和錯誤代碼的資訊,請參閱處理例外和錯誤

Prisma Client 錯誤類型

Prisma Client 會拋出不同種類的錯誤。以下列出例外類型及其記錄的資料欄位

PrismaClientKnownRequestError

如果查詢引擎傳回與請求相關的已知錯誤(例如,唯一約束衝突),Prisma Client 會拋出 PrismaClientKnownRequestError 例外。

屬性描述
codePrisma 特定的錯誤代碼
meta關於錯誤的其他資訊,例如,導致錯誤的欄位:{ target: [ 'email' ] }
message錯誤代碼相關聯的錯誤訊息。
clientVersionPrisma Client 版本(例如,2.19.0

PrismaClientUnknownRequestError

如果查詢引擎傳回與請求相關但不包含錯誤代碼的錯誤,Prisma Client 會拋出 PrismaClientUnknownRequestError 例外。

屬性描述
message錯誤代碼相關聯的錯誤訊息。
clientVersionPrisma Client 版本(例如,2.19.0

PrismaClientRustPanicError

如果底層引擎崩潰並以非零退出代碼退出,Prisma Client 會拋出 PrismaClientRustPanicError 例外。在這種情況下,必須重新啟動 Prisma Client 或整個 Node 进程。

屬性描述
message錯誤代碼相關聯的錯誤訊息。
clientVersionPrisma Client 版本(例如,2.19.0

PrismaClientInitializationError

如果啟動查詢引擎和建立與資料庫的連線時發生問題,Prisma Client 會拋出 PrismaClientInitializationError 例外。這會在以下情況發生:

  • 當呼叫 prisma.$connect() 時,或
  • 當執行第一個查詢時

可能發生的錯誤包括

  • 提供的資料庫認證無效
  • 在提供的主機名稱和端口下沒有資料庫伺服器正在運行
  • 查詢引擎 HTTP 伺服器想要綁定的端口已被佔用
  • 缺少或無法存取的環境變數
  • 找不到目前平台的查詢引擎二進制檔(generator 區塊)
屬性描述
errorCodePrisma 特定的錯誤代碼。
message錯誤代碼相關聯的錯誤訊息。
clientVersionPrisma Client 版本(例如,2.19.0

PrismaClientValidationError

如果驗證失敗,Prisma Client 會拋出 PrismaClientValidationError 例外,例如:

  • 缺少欄位 - 例如,建立新記錄時,空的 data: {} 屬性
  • 提供了不正確的欄位類型(例如,將 Boolean 欄位設定為 "Hello, I like cheese and gold!"
屬性描述
message錯誤訊息。
clientVersionPrisma Client 版本(例如,2.19.0

錯誤代碼

通用

P1000

"資料庫伺服器 {database_host} 驗證失敗,提供的 {database_user} 資料庫認證無效。請確保為 {database_host} 的資料庫伺服器提供有效的資料庫認證。"

P1001

"無法連線到 {database_host}:{database_port} 的資料庫伺服器。請確保您的資料庫伺服器正在 {database_host}:{database_port} 運行。"

P1002

"已連線到 {database_host}:{database_port} 的資料庫伺服器,但連線逾時。請重試。請確保您的資料庫伺服器正在 {database_host}:{database_port} 運行。"

P1003

"資料庫 {database_file_name} 在 {database_file_path} 不存在"

"資料庫 {database_name}.{database_schema_name}{database_host}:{database_port} 的資料庫伺服器上不存在。"

"資料庫 {database_name}{database_host}:{database_port} 的資料庫伺服器上不存在。"

P1008

"操作在 {time} 後逾時"

P1009

"資料庫 {database_name} 已在 {database_host}:{database_port} 的資料庫伺服器上存在"

P1010

"使用者 {database_user} 被拒絕存取資料庫 {database_name}"

P1011

"開啟 TLS 連線時發生錯誤:{message}"

P1012

注意: 如果您在將 Prisma ORM 升級到 4.0.0 或更高版本後收到錯誤代碼 P1012,請參閱版本 4.0.0 升級指南。在 4.0.0 版本之前有效的 schema 可能在 4.0.0 和更高版本中無效。升級指南說明如何更新您的 schema 使其有效。

"{full_error}"

可能的 P1012 錯誤訊息

  • "缺少引數 {}。"
  • "函式 {} 接受個引數,但收到."
  • "屬性 @{} 中缺少引數 {}。"
  • 資料來源區塊 {} 中缺少引數 {}。"
  • 產生器區塊 {} 中缺少引數 {}。"
  • "解析屬性 @{} 時發生錯誤"
  • "屬性 @{} 定義了兩次。"
  • "資料庫名稱為 {} 的模型無法定義,因為已存在另一個同名的模型:{}"
  • "{} 是保留的純量類型名稱,不能使用。"
  • "{} 無法定義,因為已存在一個 同名的 {}。"同名的 {}。"
  • "金鑰 {} 已在."
  • "引數 {} 已指定為未命名的引數。"
  • "引數 {} 已指定。"
  • "沒有此引數。""
  • "欄位 {} 已在模型 {} 上定義。"
  • "模型 {} 中的欄位 {} 不能是列表。目前的連接器不支援原始類型列表。"
  • "索引名稱 {} 已多次宣告。目前的連接器索引名稱必須是全域唯一的。"
  • "值 {} 已在列舉 {} 上定義。"
  • "未知的屬性:@{}。"
  • "未知的函式:{}。"
  • "未知的資料來源供應商:{}。"
  • "datasource {} 的 shadowDatabaseUrl 與 url 相同。請指定另一個資料庫作為 shadow database。"
  • "未知的預覽功能 {}。預期是以下其中之一"
  • "{} 不是 {} 的有效值."
  • "類型 {} 既不是內建類型,也不參考另一個模型、自訂類型或列舉。"
  • "類型 {} 不是內建類型。"
  • "意外的符號。預期是以下其中之一"
  • "找不到環境變數."
  • "預期是值,但收到{}。"
  • "預期是值,但在解析 {} 時失敗."
  • "驗證模型 {} 時發生錯誤"
  • "驗證模型 {} 中欄位 {} 時發生錯誤"
  • "驗證資料來源 {datasource} 時發生錯誤:{message}"
  • "驗證列舉 {} 時發生錯誤"
  • "驗證"

P1013

"提供的資料庫字串無效。{details}"

P1014

"模型 {model} 的底層 {kind} 不存在。"

P1015

"您的 Prisma schema 正在使用資料庫版本不支援的功能。
資料庫版本:{database_version}
錯誤
{errors}"

P1016

"您的原始查詢具有不正確的參數數量。預期:{expected},實際:{actual}。"

P1017

"伺服器已關閉連線。"

Prisma Client (查詢引擎)

P2000

"為欄位提供的值對於欄位類型而言太長。欄位:{column_name}"

P2001

"在 where 條件中搜尋的記錄 ({model_name}.{argument_name} = {argument_value}) 不存在"

P2002

"唯一約束在 {constraint} 上失敗"

P2003

"外鍵約束在欄位:{field_name} 上失敗"

P2004

"資料庫上的約束失敗:{database_error}"

P2005

"儲存在資料庫中欄位 {field_name} 的值 {field_value} 對於欄位類型而言無效"

P2006

"為 {model_name} 欄位 {field_name} 提供的 {field_value} 值無效"

P2007

"資料驗證錯誤 {database_error}"

P2008

"解析查詢 {query_parsing_error}{query_position} 失敗"

P2009

"驗證查詢失敗:{query_validation_error}{query_position}"

P2010

"原始查詢失敗。代碼:{code}。訊息:{message}"

P2011

"Null 約束違規在 {constraint} 上"

P2012

"在 {path} 缺少必要的值"

P2013

"在 {object_name} 上欄位 {field_name} 缺少必要的引數 {argument_name}。"

P2014

"您嘗試進行的變更會違反 {model_a_name}{model_b_name} 模型之間必要的關聯 '{relation_name}'。"

P2015

"找不到相關的記錄。{details}"

P2016

"查詢解釋錯誤。{details}"

P2017

"{parent_name}{child_name} 模型之間關聯 {relation_name} 的記錄未連線。"

P2018

"找不到必要的連線記錄。{details}"

P2019

"輸入錯誤。{details}"

P2020

"值超出類型範圍。{details}"

P2021

"資料表 {table} 在目前的資料庫中不存在。"

P2022

"欄位 {column} 在目前的資料庫中不存在。"

P2023

"不一致的欄位資料:{message}"

P2024

"從連線池提取新連線時逾時。(更多資訊:http://pris.ly/d/connection-pool (目前連線池逾時:{timeout},連線限制:{connection_limit}))"

P2025

"操作失敗,因為它依賴於一個或多個必要的但未找到的記錄。{cause}"

P2026

"目前的資料庫提供者不支援查詢使用的功能:{feature}"

P2027

"在查詢執行期間,資料庫上發生多個錯誤:{errors}"

P2028

"交易 API 錯誤:{error}"

P2029

"查詢參數限制超出錯誤:{message}"

P2030

"找不到用於搜尋的全文字索引,請嘗試將 @@fulltext([Fields...]) 新增到您的 schema"

P2031

"Prisma 需要執行交易,這需要您的 MongoDB 伺服器以副本集形式運行。參見詳情:https://pris.ly/d/mongodb-replica-set"

P2033

"查詢中使用的數字不符合 64 位元帶符號整數。如果您嘗試儲存大型整數,請考慮使用 BigInt 作為欄位類型"

P2034

"交易因寫入衝突或死鎖而失敗。請重試您的交易"

P2035

"資料庫上的斷言違規:{database_error}"

P2036

"外部連接器中的錯誤(ID {id})"

P2037

"開啟了過多的資料庫連線:{message}"

Prisma Migrate (Schema Engine)

警告

Schema Engine 以前稱為 Migration Engine。此變更在版本 5.0.0 中引入。

P3000

"建立資料庫失敗:{database_error}"

P3001

"遷移可能造成破壞性變更和可能的資料遺失:{migration_engine_destructive_details}"

P3002

"嘗試的遷移已回滾:{database_error}"

P3003

"遷移的格式已變更,已儲存的遷移不再有效。要解決此問題,請按照以下步驟操作:https://pris.ly/d/migrate"

P3004

"{database_name} 資料庫是系統資料庫,不應使用 prisma migrate 進行變更。請連線到另一個資料庫。"

P3005

"資料庫 schema 不是空的。閱讀更多關於如何基線現有生產資料庫的資訊:https://pris.ly/d/migrate-baseline"

P3006

"遷移 {migration_name} 未能乾淨俐落地應用到 shadow database。
{error_code}錯誤
{inner_error}"

P3007

"某些請求的預覽功能在 schema engine 中尚不允許。請在使用遷移之前從您的資料模型中移除它們。(已封鎖:{list_of_blocked_features})"

P3008

"遷移 {migration_name} 已記錄為已應用於資料庫。"

P3009

"migrate 在目標資料庫中找到失敗的遷移,新的遷移將不會被應用。閱讀更多關於如何在生產資料庫中解決遷移問題的資訊:https://pris.ly/d/migrate-resolve
{details}"

P3010

"遷移的名稱太長。它不能超過 200 個字元(位元組)。"

P3011

"遷移 {migration_name} 無法回滾,因為它從未應用於資料庫。提示:您是否傳入了完整的遷移名稱?(範例:"20201207184859_initial_migration")"

P3012

"遷移 {migration_name} 無法回滾,因為它不是處於失敗狀態。"

P3013

"migrate 中不再支援資料來源供應商陣列。請變更您的資料來源以使用單一供應商。閱讀更多資訊,請訪問 https://pris.ly/multi-provider-deprecation"

P3014

"Prisma Migrate 無法建立 shadow database。請確保資料庫使用者有權限建立資料庫。閱讀更多關於 shadow database(和解決方法)的資訊,請訪問 https://pris.ly/d/migrate-shadow

原始錯誤:{error_code}
{inner_error}"

P3015

"找不到 {migration_file_path} 的遷移檔案。請刪除目錄或還原遷移檔案。"

P3016

"資料庫重置的備用方法失敗,這意味著 Migrate 無法完全清理資料庫。原始錯誤:{error_code}
{inner_error}"

P3017

"找不到遷移 {migration_name}。請確保遷移存在,並且您包含了目錄的完整名稱。(範例:"20201207184859_initial_migration")"

P3018

"遷移應用失敗。在錯誤恢復之前,無法應用新的遷移。閱讀更多關於如何在生產資料庫中解決遷移問題的資訊:https://pris.ly/d/migrate-resolve

遷移名稱:{migration_name}

資料庫錯誤代碼:{database_error_code}

資料庫錯誤
{database_error} "

P3019

"您的 schema 中指定的資料來源供應商 {provider} 與 migration_lock.toml 中指定的供應商 {expected_provider} 不符。請移除您目前的遷移目錄並使用 prisma migrate dev 啟動新的遷移歷史記錄。閱讀更多資訊:https://pris.ly/d/migrate-provider-switch"

P3020

"Azure SQL 上已停用自動建立陰影資料庫。請使用 shadowDatabaseUrl 資料來源屬性設定陰影資料庫。"
閱讀文件頁面以瞭解更多詳細資訊: https://pris.ly/d/migrate-shadow"

P3021

"無法在此資料庫上建立外來鍵。瞭解更多關於如何處理此問題: https://pris.ly/d/migrate-no-foreign-keys"

P3022

"在此資料庫上已停用 DDL (資料定義語言) SQL 陳述式的直接執行。請在此處閱讀更多關於如何處理此問題的資訊: https://pris.ly/d/migrate-no-direct-ddl"

prisma db pull

P4000

"Introspection 操作未能產生 schema 檔案:{introspection_error}"

P4001

"Introspection 的資料庫是空的。"

P4002

"Introspection 的資料庫的 schema 不一致:{explanation}"

Prisma Accelerate

Prisma Accelerate 相關錯誤代碼以 P6xxx 開頭,除了 P5011 之外。

P6000 (ServerError)

用於捕捉所有其他錯誤的通用錯誤。

P6001 (InvalidDataSource)

URL 格式錯誤;例如,它未使用 prisma:// 協定。

P6002 (Unauthorized)

連線字串中的 API 金鑰無效。

P6003 (PlanLimitReached)

已超出目前方案包含的使用量。這只會發生在免費方案上。

P6004 (QueryTimeout)

已超出 Accelerate 的全域逾時時間。您可以在這裡找到限制。

另請參閱疑難排解指南以取得更多資訊。

P6005 (InvalidParameters)

使用者提供的參數無效。目前僅與交易方法相關。例如,設定過高的逾時時間。您可以在這裡找到限制。

P6006 (VersionNotSupported)

選取的 Prisma 版本與 Accelerate 不相容。當使用者使用我們偶爾會修剪的不穩定開發版本時,可能會發生這種情況。

P6008 (ConnectionError|EngineStartError)

引擎啟動失敗。例如,它無法建立與資料庫的連線。

另請參閱疑難排解指南以取得更多資訊。

P6009 (ResponseSizeLimitExceeded)

已超出 Accelerate 的全域回應大小限制。您可以在這裡找到限制。

另請參閱疑難排解指南以取得更多資訊。

P6010 (ProjectDisabledError)

您的 accelerate 專案已停用。請重新啟用以使用它。

P5011 (Too Many Requests)

此錯誤表示請求量已超出限制。請實作退避策略,稍後再試一次。如需預期高工作負載的協助,請聯絡支援團隊

Prisma Pulse

Prisma Pulse 相關錯誤代碼以 P61xx 開頭。

P6100 (ServerError) – HTTP 狀態碼 500

發生非預期的伺服器錯誤。這可能是由於 Prisma Pulse 或其基礎架構內部的技術問題所導致。如需任何與 Prisma Pulse 相關的事件,您可以參考我們的狀態頁面 這裡 並透過我們提供的管道之一聯絡我們的支援團隊以報告您的問題。

P6101 (DatasourceError) – HTTP 狀態碼 400

原因

  1. Prisma Pulse 無法連線到資料來源。主控台將在啟用 Pulse 時驗證連線,以降低此錯誤的可能性。但是,資料來源可能會在組態步驟之後變得無法使用,從而導致此錯誤。
  2. 資料來源可連線,但不符合 Prisma Pulse 的需求。主控台將在啟用 Pulse 時驗證組態,以降低此錯誤的可能性。但是,資料來源可能會在組態步驟之後變更,從而導致此錯誤。

P6102 (Unauthorized) – HTTP 狀態碼 400

API 金鑰無效。

P6103 (ProjectDisabledError) – HTTP 狀態碼 400

未針對已設定的 API 金鑰啟用 Prisma Pulse。

P6104 (AccountHoldError) – HTTP 狀態碼 400

您的 Prisma Data Platform 帳戶已被封鎖,可能是因為超出目前方案中包含的使用量限制。請查看錯誤訊息以取得更多資訊。

如果您需要進一步協助,請透過我們的支援管道之一與我們聯絡。

P6105 (VersionNotSupported) – HTTP 狀態碼 400

專案的 Prisma 版本與 Prisma Pulse 不相容。