跳到主要内容

创建错误报告

概述

您可以通过创建 **错误报告** 来帮助我们改进 Prisma ORM。创建错误报告时,务必包含尽可能多的有关您问题的信息。这样可以更轻松地重现问题。

请注意,您也可以通过 GitHub 上的 issue 模板创建 **功能请求** 或询问 **问题**。

在 GitHub 上哪里打开错误报告?

Prisma ORM 的工具分布在 GitHub 上 prisma 组织中的不同存储库中。您可以在相应工具的存储库中打开一个新的 issue。

如果您不确定在 GitHub 上哪里打开 issue,您可以使用主 prisma/prisma 存储库作为默认值。我们的工程团队会定期对新的 issue 进行分类,并在必要时将其移至另一个存储库。

理想情况:共享带有重现问题的独立存储库

在理想情况下,您可以在隔离的环境中重现错误,并将其放入一个 GitHub 存储库中,以便您可以在报告中共享。这样,我们已经有了重现步骤,并且可以无需进一步分类即可解决问题。

StackOverflow 指南 包含了许多有关创建最小重现示例的有用信息。

编写错误报告的最佳实践

如果您没有时间创建问题的完整重现步骤,请尽可能多地包含有关问题的信息。 错误报告模板 可以帮助您完成此操作。

包含日志记录和调试输出

请确保在 issue 中包含任何 日志记录调试 输出,这些输出可能有助于识别问题。

设置 DEBUG 环境变量

要从 Prisma ORM 获取更多输出,您可以将 DEBUG 设置为 *

export DEBUG="*"

打印 Prisma 客户端的日志

您可以通过使用 log 选项实例化 Prisma 客户端来启用 Prisma 客户端中的更多日志

const prisma = new PrismaClient({ log: ['query', 'info', 'warn'] })

包含错误描述、重现步骤和预期行为

描述错误时,包含以下信息很有帮助

  • 对错误的清晰简洁的描述
  • 重现错误的步骤
  • 对您预期发生情况的清晰简洁的描述
  • 屏幕截图(如果适用)
展开以获取关于假设错误报告的示例

示例

描述错误

@unique 属性在 email 字段上在我的模型上不起作用。我可以创建具有相同 email 的重复记录。

重现步骤:

我有这个 Prisma 模式(已删除所有不必要的模型和字段)

model User {
id Int @id @default(autoincrement())
email String @unique
}

然后我运行 prisma generate 来生成 Prisma 客户端。

然后我有一个 Node.js 脚本,它创建两个具有相同 emailUser 记录

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

// A `main` function so that we can use async/await
async function main() {
const user1 = await prisma.create({
data: { email: '[email protected]' },
})
const user2 = await prisma.create({
data: { email: '[email protected]' },
})
console.log(user1, user2)
}

main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})

预期行为

我预期在尝试创建具有与 user1 相同 emailuser2 时出现异常,因为这违反了在 Prisma 模式中定义的 @unique 约束。

包含环境和设置信息

请包含有关您的环境和设置的任何信息。特别是,包含以下信息很重要

  • 您使用的是哪个 **操作系统**(例如 macOS、Windows、Debian、CentOS 等)
  • 您使用的是哪个 **数据库** 与 Prisma ORM(PostgreSQL、MySQL、MariaDB、SQLite 或 Microsoft SQL Server)
  • 您使用的是哪个 **Prisma ORM 版本**(运行 prisma -v 以查看您的 Prisma ORM 版本)
  • 您使用的是哪个 **Node.js 版本**(运行 node -v 以查看您的 Node.js 版本)

以下是在您的错误报告中可能显示的内容示例

  • 操作系统:macOS Catalina 10.15.7
  • 数据库:PostgreSQL v11
  • Node.js 版本:v14.16.1
  • Prisma ORM 版本
prisma               : 2.22.0
@prisma/client : Not found
Current platform : darwin
Query Engine : query-engine 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/query-engine-darwin)
Migration Engine : migration-engine-cli 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/migration-engine-darwin)
Format Binary : prisma-fmt 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/prisma-fmt-darwin)
Default Engines Hash : 60cc71d884972ab4e897f0277c4b84383dddaf6c
Studio : 0.379.0

此外,您可以使用 prisma debug 命令来检索调试信息。prisma debug 命令提供补充 prisma -v 命令输出的调试信息。信息包括用于 Prisma 客户端、Prisma Migrate、Prisma CLI 和 Prisma Studio 的 环境变量

info

prisma debug 命令从 5.6.0 及更高版本开始可用。如果您使用的是旧版本的 Prisma ORM,则可以通过运行以下命令来使用此命令

npx prisma@latest debug

包含相关的 Prisma ORM 信息(例如 Prisma 模式、Prisma 客户端查询等)

为了帮助我们重现您的问题,在错误报告中包含您的 Prisma 模式会有所帮助。在错误报告中共享 Prisma 模式之前,请删除所有数据库凭据。如果您确定模式的哪些部分会导致问题,请删除其中不相关的部分,只显示与问题相关的部分。如果您不确定,请包含您的整个模式。

如果您遇到 Prisma 客户端问题,请也包含导致问题的 Prisma 客户端查询。