由于某种原因,我得到错误Unique constraint failed on the fields: (
id )
时,试图创建一个新的艺术家文档。
下面是我调用的函数。
async create(createArtistInput: CreateArtistInput): Promise<Artist> {
console.log(createArtistInput, 'create artist input')
const slug = slugify(createArtistInput.name, {
replacement: '-',
strict: true,
})
return this.db.artist.create({
data: {
name: createArtistInput.name,
spotifyArtistId: createArtistInput.spotifyArtistId,
spotifyArtistName: createArtistInput.spotifyArtistName,
slug,
},
})
}
控制台日志打印了以下响应,所以我不明白为什么id的唯一约束失败,因为我没有传入一个约束。我让prisma模式处理这个问题。
{
name: 'twofiveone',
spotifyArtistId: '5Fex9xz9rkPqQqMBVtuIrE',
spotifyArtistName: 'twofiveone'
} create artist input
下面是prisma方案(如果需要
model Artist {
id Int @id @default(autoincrement())
name String
slug String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
spotifyArtistId String?
spotifyArtistName String?
}
有人知道发生了什么吗?好像我因为某种原因不能创造新的艺术家。
2条答案
按热度按时间gfttwv5a1#
自动增量从1开始创建自己的序列,您可以阅读更多关于here的信息。
如果添加带有id的随机记录,那么Postgres不知道,它会尝试从1开始。如果1已经存在,那么它会抛出错误。
因此,在这种情况下,最佳实践是始终让数据库为您生成id,而不是手动添加它。
bf1o4zei2#
最有可能的原因是在开始时手动添加了id为0的行。