Daniel Roberto
Daniel Roberto

Reputation: 109

Prisma seed, node says Unique constraint failed on the constraint

im trying to seed my database, but i got this error: Unique constraint failed on the constraint: Figures_table_manufacturerID_key

i try to fix that, but nothing works, here my schema:

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model Figures_table {
  id             String @id @unique
  name           String @db.LongText
  category       String @db.LongText
  price          String @db.LongText
  specifications String @db.LongText
  releaseInfo    String @db.LongText
  details        String @db.LongText

  createdAt DateTime @default(now())

  Series         Series[]
  Images         Images[]
  Manufacturers  Manufacturers[]
  serieID        Int             @unique
  manufacturerID Int             @unique
}

model Series {
  id               Int           @id @unique @default(autoincrement())
  serie            String
  serieReferenceID Figures_table @relation(fields: [id], references: [serieID])
}

model Manufacturers {
  id                      Int           @id @unique @default(autoincrement())
  manufacturer            String
  manufacturerReferenceID Figures_table @relation(fields: [id], references: [manufacturerID])
}

model Images {
  id                Int           @id @unique @default(autoincrement())
  link              String
  figureID          String
  figureReferenceID Figures_table @relation(fields: [figureID], references: [id])
}

my seed

import { PrismaClient } from "@prisma/client";
import { series, manufacturers, images, figures } from "./data";

async function seed() {
  const prisma = new PrismaClient();

  await prisma.figures_table.createMany({ data: figures as any });
  await prisma.images.createMany({ data: images as any });
  await prisma.manufacturers.createMany({ data: manufacturers as any });
  await prisma.series.createMany({ data: series as any });
}

seed();

my data file is too long, if you want to see, click: https://github.com/DanielTrybe/backend-figures/blob/master/prisma/data.js

Upvotes: 0

Views: 1667

Answers (1)

Nurul Sundarani
Nurul Sundarani

Reputation: 7588

In the Figures_table you have defined a unique constraint on manufactureID which would mean that each manufacture could only have one figure, but in your seed data there are multiple figures for the same manufacture which is causing this constraint failed error.

If you want to allow multiple images for a manufacturer you would need to remove the @unique constraint

model Figures_table {
  id             String @id @unique
  name           String @db.LongText
  category       String @db.LongText
  price          String @db.LongText
  specifications String @db.LongText
  releaseInfo    String @db.LongText
  details        String @db.LongText

  createdAt DateTime @default(now())

  Series         Series[]
  Images         Images[]
  Manufacturers  Manufacturers[]
  serieID        Int             @unique
  manufacturerID Int             
}

Upvotes: 1

Related Questions