错误消息参考
有关如何处理异常和错误代码的更多信息,请参阅 处理异常和错误。
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 错误消息
- "参数 {} 缺失。"
- "函数 {} 接受"个参数,但接收到."
- "在属性 @{} 中参数 {} 缺失。"
- "在 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
)
此错误表示请求量超出。请实施退避策略并稍后重试。如需高负载预期方面的帮助,请联系支持。