錯誤訊息參考
有關如何處理異常和錯誤程式碼的更多資訊,請參閱處理異常和錯誤。
Prisma Client 錯誤型別
Prisma Client 會丟擲不同型別的錯誤。以下列出了異常型別及其文件化的資料欄位
PrismaClientKnownRequestError
如果查詢引擎返回與請求相關的已知錯誤(例如,唯一約束衝突),Prisma Client 會丟擲 PrismaClientKnownRequestError 異常。
| 屬性 | 描述 |
|---|---|
程式碼 | Prisma 特定的錯誤程式碼。 |
元資料 | 關於錯誤的附加資訊——例如,導致錯誤的欄位:{ target: [ 'email' ] } |
訊息 | 與錯誤程式碼關聯的錯誤訊息。 |
客戶端版本 | Prisma Client 版本(例如,2.19.0) |
PrismaClientUnknownRequestError
如果查詢引擎返回與請求相關的、沒有錯誤程式碼的錯誤,Prisma Client 會丟擲 PrismaClientUnknownRequestError 異常。
| 屬性 | 描述 |
|---|---|
訊息 | 與錯誤程式碼關聯的錯誤訊息。 |
客戶端版本 | Prisma Client 版本(例如,2.19.0) |
PrismaClientRustPanicError
如果底層引擎崩潰並以非零退出程式碼退出,Prisma Client 會丟擲 PrismaClientRustPanicError 異常。在這種情況下,必須重新啟動 Prisma Client 或整個 Node 程序。
| 屬性 | 描述 |
|---|---|
訊息 | 與錯誤程式碼關聯的錯誤訊息。 |
客戶端版本 | Prisma Client 版本(例如,2.19.0) |
PrismaClientInitializationError
如果查詢引擎啟動和資料庫連線建立過程中出現問題,Prisma Client 會丟擲 PrismaClientInitializationError 異常。這通常發生在:
- 呼叫
prisma.$connect()時 或 - 執行第一個查詢時
可能發生的錯誤包括:
- 提供的資料庫憑據無效
- 在提供的 hostname 和埠下沒有資料庫伺服器執行
- 查詢引擎 HTTP 伺服器要繫結的埠已被佔用
- 缺少或無法訪問的環境變數
- 找不到當前平臺的查詢引擎二進位制檔案(
generator塊)
| 屬性 | 描述 |
|---|---|
錯誤程式碼 | Prisma 特定的錯誤程式碼。 |
訊息 | 與錯誤程式碼關聯的錯誤訊息。 |
客戶端版本 | Prisma Client 版本(例如,2.19.0) |
PrismaClientValidationError
如果驗證失敗,Prisma Client 會丟擲 PrismaClientValidationError 異常——例如
- 缺少欄位——例如,建立新記錄時
data: {}屬性為空 - 提供了不正確的欄位型別(例如,將
Boolean欄位設定為"Hello, I like cheese and gold!")
| 屬性 | 描述 |
|---|---|
訊息 | 錯誤訊息。 |
客戶端版本 | 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 錯誤訊息
- "引數
{}缺失。" - "函式
{}需要個引數,但收到." - "屬性
@{}中缺少引數{}。" - "資料來源塊
{}中缺少引數{}。" - "生成器塊
{}中缺少引數{}。" - "解析屬性
@{}時出錯" - "屬性
@{}已被定義兩次。" - "無法定義資料庫名為
{}的模型,因為已存在同名模型:{}" - "
{}是保留的標量型別名稱,不能使用。" - 該 無法定義,因為已存在同名。
- 鍵
{}已在...中定義." - "引數
{}已被指定為未命名引數。" - "引數
{}已被指定。" - "無此引數。"
- "欄位
{}已在模型{}上定義。" - "模型
{}中的欄位{}不能是列表。當前聯結器不支援原始型別列表。" - "索引名
{}被宣告多次。在當前聯結器下,索引名必須全域性唯一。" - "值
{}已在列舉{}上定義。" - "未知屬性:
@{}。" - "未知函式:
{}。" - "未知資料來源提供者:
{}。" - "shadowDatabaseUrl 與資料來源
{}的 url 相同。請指定一個不同的資料庫作為影子資料庫。" - "未知預覽功能
{}。期望以下之一" - "
{}不是一個有效值,對於." - "型別
{}既不是內建型別,也不引用其他模型、自定義型別或列舉。" - "型別
{}不是內建型別。" - "意外的 token。期望以下之一"
- 環境變數未找到."
- 期望一個值,但收到值
{}。" - 期望一個值,但在解析
{}時失敗." - "驗證模型
{}時出錯" - "驗證模型
{}中欄位{}時出錯" - "驗證資料來源
{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_position} 處解析查詢 {query_parsing_error} 失敗"
P2009
"在 {query_position} 處驗證查詢 {query_validation_error} 失敗"
P2010
"原始查詢失敗。程式碼: {code}。訊息: {message}"
P2011
"在 {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 引擎)
Schema 引擎以前稱為 Migration 引擎。此更改在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} 未能幹淨地應用於影子資料庫。
{error_code}錯誤
{inner_error}"
P3007
"Schema 引擎中尚不允許使用某些請求的預覽功能。在使用遷移之前,請將其從資料模型中移除。(已阻止: {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 無法建立影子資料庫。請確保資料庫使用者具有建立資料庫的許可權。閱讀更多關於影子資料庫(和解決方法)的資訊: 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
"內省操作未能生成 Schema 檔案: {introspection_error}"
P4001
"內省的資料庫為空。"
P4002
"內省資料庫的 Schema 不一致: {explanation}"
Prisma Accelerate
與 Prisma Accelerate 相關的錯誤以 P6xxx 開頭,除了P5011。
P6000 (伺服器錯誤)
捕獲所有其他錯誤的通用錯誤。
P6001 (無效資料來源)
URL 格式錯誤;例如,它沒有使用 prisma:// 協議。
P6002 (未經授權)
連線字串中的 API 金鑰無效。
P6003 (計劃限制已達)
當前計劃的包含使用量已超出。這僅在免費計劃中可能發生。
P6004 (查詢超時)
Accelerate 的全域性超時已超出。您可以在此處找到該限制。
另請參閱故障排除指南以獲取更多資訊。
P6005 (無效引數)
使用者提供了無效引數。目前僅與事務方法相關。例如,設定了過高的超時。您可以在此處找到該限制。
P6006 (不支援的版本)
所選的 Prisma 版本與 Accelerate 不相容。當用戶使用我們偶爾清理的不穩定開發版本時,可能會發生這種情況。
P6008 (連線錯誤|引擎啟動錯誤)
引擎啟動失敗。例如,無法建立到資料庫的連線。
另請參閱故障排除指南以獲取更多資訊。
P6009 (響應大小超出限制)
Accelerate 的全域性響應大小限制已超出。您可以在此處找到該限制。
另請參閱故障排除指南以獲取更多資訊。
P6010 (專案已停用錯誤)
您的 Accelerate 專案已停用。請重新啟用它才能使用。
P5011 (請求過多)
此錯誤表示請求量超出限制。請實施退避策略並稍後重試。如需高併發工作負載的幫助,請聯絡支援。