创建错误报告
概述
您可以通过创建 **错误报告** 来帮助我们改进 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 脚本,它创建两个具有相同 email
的 User
记录
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
相同 email
的 user2
时出现异常,因为这违反了在 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 的 环境变量。
prisma debug
命令从 5.6.0 及更高版本开始可用。如果您使用的是旧版本的 Prisma ORM,则可以通过运行以下命令来使用此命令
npx prisma@latest debug
包含相关的 Prisma ORM 信息(例如 Prisma 模式、Prisma 客户端查询等)
为了帮助我们重现您的问题,在错误报告中包含您的 Prisma 模式会有所帮助。在错误报告中共享 Prisma 模式之前,请删除所有数据库凭据。如果您确定模式的哪些部分会导致问题,请删除其中不相关的部分,只显示与问题相关的部分。如果您不确定,请包含您的整个模式。
如果您遇到 Prisma 客户端问题,请也包含导致问题的 Prisma 客户端查询。