NodeJS Prisma postgres -字段的唯一约束失败:('id')

30byixjq  于 2023-01-12  发布在  Node.js
关注(0)|答案(2)|浏览(154)

由于某种原因,我得到错误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?
}

有人知道发生了什么吗?好像我因为某种原因不能创造新的艺术家。

gfttwv5a

gfttwv5a1#

自动增量从1开始创建自己的序列,您可以阅读更多关于here的信息。
如果添加带有id的随机记录,那么Postgres不知道,它会尝试从1开始。如果1已经存在,那么它会抛出错误。
因此,在这种情况下,最佳实践是始终让数据库为您生成id,而不是手动添加它。

bf1o4zei

bf1o4zei2#

最有可能的原因是在开始时手动添加了id为0的行。

相关问题