跳到主要内容

错误消息参考

有关如何处理异常和错误代码的更多信息,请参阅 处理异常和错误

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 错误消息

  • "参数 {} 缺失。"
  • "函数 {} 接受"个参数,但接收到."
  • "在属性 @{} 中参数 {} 缺失。"
  • "在 data source 块 {} 中参数 {} 缺失。"
  • "在 generator 块 {} 中参数 {} 缺失。"
  • "解析属性 @{} 时出错""
  • "属性 @{} 被定义了两次。"
  • "无法定义数据库名为 {} 的模型,因为已存在同名的另一个模型:{}"
  • "`"是一个保留的标量类型名称,不能使用。"
  • "这个" "无法定义,因为一个""同名 {} 已存在。"
  • "键 {} 已在"."
  • "参数 {} 已被指定为无名参数。"
  • "参数 {} 已被指定。"
  • "无此参数。""
  • "字段 {} 已在模型 {} 上定义。"
  • "模型 {} 中的字段 {} 不能是列表。当前的 connector 不支持原始类型的列表。"
  • "索引名称 {} 被声明了多次。对于当前的 connector,索引名称必须全局唯一。"
  • "值 {} 已在枚举 {} 上定义。"
  • "未知属性:@{}。"
  • "未知函数:{}。"
  • "未知 datasource provider:{}。"
  • "shadowDatabaseUrl 与 datasource {} 的 url 相同。请指定一个不同的数据库作为 shadow database。"
  • "未知的预览特性 {}。预期值为""
  • "{} 不是 的有效值"."
  • "类型 {} 既不是内置类型,也不引用另一个模型、自定义类型或枚举。"
  • "类型 {} 不是内置类型。"
  • "意外的 token。预期值为""
  • "未找到环境变量"."
  • "预期值为",但接收到值 {}。"
  • "预期值为"值,但在解析 {} 时失败"."
  • "验证模型 {} 时出错""
  • "验证模型 {} 中的字段 {} 时出错""
  • "验证 datasource {datasource} 时出错:{message}"
  • "验证枚举 {} 时出错""
  • "验证 时出错""

P1013

"提供的数据库字符串无效。{details}"

P1014

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

P1015

"你的 Prisma schema 使用了当前数据库版本不支持的特性。
数据库版本:{database_version}
错误
{errors}"

P1016

"你的 raw query 参数数量不正确。预期值:{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

"Raw query 失败。代码:{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

"当前数据库 provider 不支持查询中使用的特性:{feature}"

P2027

"在查询执行期间,数据库上发生了多个错误:{errors}"

P2028

"事务 API 错误:{error}"

P2029

"查询参数超出限制错误:{message}"

P2030

"找不到可用于搜索的全文本索引,请尝试向你的 schema 添加 @@fulltext([Fields...])"

P2031

"Prisma 需要执行事务,这要求你的 MongoDB 服务器作为副本集运行。详见:https://pris.ly/d/mongodb-replica-set"

P2033

"查询中使用的数字不符合 64 位有符号整数。如果你试图存储大整数,请考虑使用 BigInt 作为字段类型"

P2034

"事务因写入冲突或死锁而失败。请重试你的事务"

P2035

"数据库上发生断言失败:{database_error}"

P2036

"外部 connector (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 中不再支持 datasource provider 数组。请将你的 datasource 更改为使用单个 provider。了解更多信息: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 中指定的 datasource provider {provider} 与 migration_lock.toml 中指定的 {expected_provider} 不匹配。请删除当前的 migration 目录,并使用 prisma migrate dev 开始新的迁移历史。了解更多:https://pris.ly/d/migrate-provider-switch"

P3020

"在 Azure SQL 上禁用了自动创建 shadow database。请使用 shadowDatabaseUrl datasource 属性设置 shadow database。
阅读文档页面了解更多详情: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 (ServerError)

捕获所有其他错误的通用错误。

P6001 (InvalidDataSource)

URL 格式错误;例如,它未使用 prisma:// 协议。

P6002 (Unauthorized)

连接字符串中的 API Key 无效。

P6003 (PlanLimitReached)

当前计划的包含使用量已超出。这只可能发生在免费计划上。

P6004 (QueryTimeout)

Accelerate 的全局超时已超出。您可以在此处找到该限制。

另请参阅故障排除指南以获取更多信息。

P6005 (InvalidParameters)

用户提供了无效参数。目前仅与事务方法相关。例如,设置的超时过高。您可以在此处找到该限制。

P6006 (VersionNotSupported)

所选的 Prisma 版本与 Accelerate 不兼容。当用户使用了我们偶尔会清理的不稳定开发版本时,可能会发生这种情况。

P6008 (ConnectionError|EngineStartError)

引擎启动失败。例如,无法建立与数据库的连接。

另请参阅故障排除指南以获取更多信息。

P6009 (ResponseSizeLimitExceeded)

Accelerate 的全局响应大小限制已超出。您可以在此处找到该限制。

另请参阅故障排除指南以获取更多信息。

P6010 (ProjectDisabledError)

您的 Accelerate 项目已禁用。请再次启用它以使用。

P5011 (Too Many Requests)

此错误表示请求量超出。请实施退避策略并稍后重试。如需高负载预期方面的帮助,请联系支持