跳至主要内容

错误消息参考

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

Prisma 客户端错误类型

Prisma 客户端会抛出不同类型的错误。以下列出了异常类型及其记录的数据字段

PrismaClientKnownRequestError

如果查询引擎返回与请求相关的已知错误(例如,唯一约束冲突),则 Prisma 客户端会抛出 PrismaClientKnownRequestError 异常。

属性描述
codePrisma 特定的 错误代码.
meta有关错误的附加信息 - 例如,导致错误的字段:{ target: [ 'email' ] }
message错误代码 关联的错误消息。
clientVersionPrisma 客户端版本(例如,2.19.0

PrismaClientUnknownRequestError

如果查询引擎返回与请求相关的错误,但没有错误代码,则 Prisma 客户端会抛出 PrismaClientUnknownRequestError 异常。

属性描述
message错误代码 关联的错误消息。
clientVersionPrisma 客户端版本(例如,2.19.0

PrismaClientRustPanicError

如果底层引擎崩溃并退出非零退出代码,则 Prisma 客户端会抛出 PrismaClientRustPanicError 异常。在这种情况下,必须重启 Prisma 客户端或整个 Node 进程。

属性描述
message错误代码 关联的错误消息。
clientVersionPrisma 客户端版本(例如,2.19.0

PrismaClientInitializationError

如果在启动查询引擎并创建与数据库的连接时出现问题,则 Prisma 客户端会抛出 PrismaClientInitializationError 异常。这将发生在以下两种情况下:

  • 调用 prisma.$connect() 时,或者
  • 执行第一个查询时

可能出现的错误包括

  • 提供的数据库凭据无效
  • 在提供的 hostname 和端口下没有运行的数据库服务器
  • 查询引擎 HTTP 服务器想要绑定的端口已被占用
  • 缺少或无法访问的环境变量
  • 找不到当前平台的查询引擎二进制文件(generator 块)
属性描述
errorCodePrisma 特定的错误代码。
message错误代码 关联的错误消息。
clientVersionPrisma 客户端版本(例如,2.19.0

PrismaClientValidationError

如果验证失败,则 Prisma 客户端会抛出 PrismaClientValidationError 异常,例如

  • 缺少字段 - 例如,在创建新记录时,data: {} 属性为空
  • 提供的字段类型不正确(例如,将 Boolean 字段设置为 "Hello, I like cheese and gold!"
属性描述
message错误消息。
clientVersionPrisma 客户端版本(例如,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 之前有效的模式在版本 4.0.0 及更高版本中可能无效。升级指南说明了如何更新你的模式以使其有效。

"{full_error}"

可能的 P1012 错误消息

  • "参数 {} 缺失。"
  • "函数 {} 接受个参数,但接收了."
  • "参数 {} 在属性 @{} 中缺失。"
  • "参数 {} 在数据源块 {} 中缺失。"
  • "参数 {} 在生成器块 {} 中缺失。"
  • "解析属性 @{} 时出错"
  • "属性 @{} 定义了两次。"
  • "无法定义数据库名称为 {} 的模型,因为存在另一个同名模型:{}"
  • "{} 是保留的标量类型名称,不能使用。"
  • "该 {} 无法定义,因为一个已存在。"
  • "键 {} 已在."
  • "参数 {} 已被指定为无名参数。"
  • "参数 {} 已被指定。"
  • "没有这样的参数。""
  • "字段 {} 已在模型 {} 上定义。"
  • "模型 {} 中的字段 {} 不能是列表。当前连接器不支持原始类型的列表。"
  • "索引名称 {} 定义了多次。使用当前连接器,索引名称必须在全局范围内唯一。"
  • "值 {} 已在枚举 {} 上定义。"
  • "未知属性:@{}。"
  • "未知函数:{}。"
  • "未知数据源提供程序:{}。"
  • "shadowDatabaseUrl 与数据源 {} 的 url 相同。请指定不同的数据库作为影子数据库。"
  • "预览功能 {} 未知。预期为以下之一"
  • "{} 不是有效的."
  • "类型 {} 不是内置类型,也不引用其他模型、自定义类型或枚举。"
  • "类型 {} 不是内置类型。"
  • "意外标记。预期为以下之一"
  • "未找到环境变量."
  • "预期为值,但接收了{}。"
  • "预期为值,但在解析 {} 时失败."
  • "验证模型 {} 时出错"
  • "验证模型 {} 中的字段 {} 时出错"
  • "验证数据源 {datasource} 时出错:{message}"
  • "验证枚举 {} 时出错"
  • "验证"

P1013

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

P1014

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

P1015

"你的 Prisma 模式正在使用数据库版本不支持的功能。
数据库版本:{database_version}
错误
{errors}"

P1016

"你的原始查询的参数数量不正确。预期:{expected},实际:{actual}。"

P1017

"服务器已关闭连接。"

Prisma 客户端(查询引擎)

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

"在 {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...])"

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

"数据库模式不为空。阅读有关如何为现有生产数据库建立基线的更多信息:https://pris.ly/d/migrate-baseline"

P3006

"迁移 {migration_name} 无法干净地应用到影子数据库。
{error_code}错误
{inner_error}"

P3007

"某些请求的预览功能在模式引擎中尚不允许。请在使用迁移之前从您的数据模型中删除它们。(被阻止:{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

"迁移不再支持数据源提供程序数组。请更改您的数据源以使用单个提供程序。在 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 中指定的 datasource provider {provider} 与 migration_lock.toml 中指定的 provider {expected_provider} 不匹配。请删除当前迁移目录,并使用 prisma migrate dev 启动新的迁移历史记录。阅读更多:https://pris.ly/d/migrate-provider-switch"

P3020

"Azure SQL 上禁用了影子数据库的自动创建。请使用 shadowDatabaseUrl datasource 属性设置影子数据库。
阅读文档页面以了解更多详细信息: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 开头。

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)

您的加速项目已禁用。请 重新启用 它以使用它。

Prisma Pulse

与 Prisma Pulse 相关的错误以 P61xx 开头。

P6100 (ServerError) – HTTP 状态 500

发生了意外的服务器错误。这可能是由于 Prisma Pulse 或其基础设施中的技术问题造成的。对于与 Prisma Pulse 相关的任何事件,您可以参考我们的状态页面 此处 并通过我们提供的 渠道 中的任何一个联系我们的支持团队以报告您的问题。

P6101 (DatasourceError) – HTTP 状态 400

原因

  1. Prisma Pulse 无法访问 datasource。控制台在启用 Pulse 时会验证连接,以减少出现此错误的可能性。但是,datasource 可能会在配置步骤之后变得不可用,从而导致此错误。
  2. datasource 可访问,但没有满足 Prisma Pulse 的要求。控制台在启用 Pulse 时会验证配置,以减少出现此错误的可能性。但是,datasource 可能会在配置步骤之后发生变化,从而导致此错误。

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 不兼容。