錯誤訊息參考
如需更多關於如何使用例外和錯誤代碼的資訊,請參閱處理例外和錯誤。
Prisma Client 錯誤類型
Prisma Client 會拋出不同種類的錯誤。以下列出例外類型及其記錄的資料欄位
PrismaClientKnownRequestError
如果查詢引擎傳回與請求相關的已知錯誤(例如,唯一約束衝突),Prisma Client 會拋出 PrismaClientKnownRequestError
例外。
屬性 | 描述 |
---|---|
code | Prisma 特定的錯誤代碼。 |
meta | 關於錯誤的其他資訊,例如,導致錯誤的欄位:{ target: [ 'email' ] } |
message | 與錯誤代碼相關聯的錯誤訊息。 |
clientVersion | Prisma Client 版本(例如,2.19.0 ) |
PrismaClientUnknownRequestError
如果查詢引擎傳回與請求相關但不包含錯誤代碼的錯誤,Prisma Client 會拋出 PrismaClientUnknownRequestError
例外。
屬性 | 描述 |
---|---|
message | 與錯誤代碼相關聯的錯誤訊息。 |
clientVersion | Prisma Client 版本(例如,2.19.0 ) |
PrismaClientRustPanicError
如果底層引擎崩潰並以非零退出代碼退出,Prisma Client 會拋出 PrismaClientRustPanicError
例外。在這種情況下,必須重新啟動 Prisma Client 或整個 Node 进程。
屬性 | 描述 |
---|---|
message | 與錯誤代碼相關聯的錯誤訊息。 |
clientVersion | Prisma Client 版本(例如,2.19.0 ) |
PrismaClientInitializationError
如果啟動查詢引擎和建立與資料庫的連線時發生問題,Prisma Client 會拋出 PrismaClientInitializationError
例外。這會在以下情況發生:
- 當呼叫
prisma.$connect()
時,或 - 當執行第一個查詢時
可能發生的錯誤包括
- 提供的資料庫認證無效
- 在提供的主機名稱和端口下沒有資料庫伺服器正在運行
- 查詢引擎 HTTP 伺服器想要綁定的端口已被佔用
- 缺少或無法存取的環境變數
- 找不到目前平台的查詢引擎二進制檔(
generator
區塊)
屬性 | 描述 |
---|---|
errorCode | Prisma 特定的錯誤代碼。 |
message | 與錯誤代碼相關聯的錯誤訊息。 |
clientVersion | Prisma Client 版本(例如,2.19.0 ) |
PrismaClientValidationError
如果驗證失敗,Prisma Client 會拋出 PrismaClientValidationError
例外,例如:
- 缺少欄位 - 例如,建立新記錄時,空的
data: {}
屬性 - 提供了不正確的欄位類型(例如,將
Boolean
欄位設定為"Hello, I like cheese and gold!"
)
屬性 | 描述 |
---|---|
message | 錯誤訊息。 |
clientVersion | Prisma 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
原因
- Prisma Pulse 無法連線到資料來源。主控台將在啟用 Pulse 時驗證連線,以降低此錯誤的可能性。但是,資料來源可能會在組態步驟之後變得無法使用,從而導致此錯誤。
- 資料來源可連線,但不符合 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 不相容。