错误消息参考
有关如何处理异常和错误代码的更多信息,请参见 处理异常和错误.
Prisma 客户端错误类型
Prisma 客户端会抛出不同类型的错误。以下列出了异常类型及其记录的数据字段
PrismaClientKnownRequestError
如果查询引擎返回与请求相关的已知错误(例如,唯一约束冲突),则 Prisma 客户端会抛出 PrismaClientKnownRequestError
异常。
属性 | 描述 |
---|---|
code | Prisma 特定的 错误代码. |
meta | 有关错误的附加信息 - 例如,导致错误的字段:{ target: [ 'email' ] } |
message | 与 错误代码 关联的错误消息。 |
clientVersion | Prisma 客户端版本(例如,2.19.0 ) |
PrismaClientUnknownRequestError
如果查询引擎返回与请求相关的错误,但没有错误代码,则 Prisma 客户端会抛出 PrismaClientUnknownRequestError
异常。
属性 | 描述 |
---|---|
message | 与 错误代码 关联的错误消息。 |
clientVersion | Prisma 客户端版本(例如,2.19.0 ) |
PrismaClientRustPanicError
如果底层引擎崩溃并退出非零退出代码,则 Prisma 客户端会抛出 PrismaClientRustPanicError
异常。在这种情况下,必须重启 Prisma 客户端或整个 Node 进程。
属性 | 描述 |
---|---|
message | 与 错误代码 关联的错误消息。 |
clientVersion | Prisma 客户端版本(例如,2.19.0 ) |
PrismaClientInitializationError
如果在启动查询引擎并创建与数据库的连接时出现问题,则 Prisma 客户端会抛出 PrismaClientInitializationError
异常。这将发生在以下两种情况下:
- 调用
prisma.$connect()
时,或者 - 执行第一个查询时
可能出现的错误包括
- 提供的数据库凭据无效
- 在提供的 hostname 和端口下没有运行的数据库服务器
- 查询引擎 HTTP 服务器想要绑定的端口已被占用
- 缺少或无法访问的环境变量
- 找不到当前平台的查询引擎二进制文件(
generator
块)
属性 | 描述 |
---|---|
errorCode | Prisma 特定的错误代码。 |
message | 与 错误代码 关联的错误消息。 |
clientVersion | Prisma 客户端版本(例如,2.19.0 ) |
PrismaClientValidationError
如果验证失败,则 Prisma 客户端会抛出 PrismaClientValidationError
异常,例如
- 缺少字段 - 例如,在创建新记录时,
data: {}
属性为空 - 提供的字段类型不正确(例如,将
Boolean
字段设置为"Hello, I like cheese and gold!"
)
属性 | 描述 |
---|---|
message | 错误消息。 |
clientVersion | Prisma 客户端版本(例如,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
原因
- Prisma Pulse 无法访问 datasource。控制台在启用 Pulse 时会验证连接,以减少出现此错误的可能性。但是,datasource 可能会在配置步骤之后变得不可用,从而导致此错误。
- 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 不兼容。