Open smndtrl opened 1 month ago
hey @smndtrl, which datasource connector are you using for this? MySQL?
@andz-bb Yes, exactly. Sorry that I forgot to add it
For completeness I checked with Postgres 15.
Updating a field where the table has multiple references shows "Duplicate key value violates unique constraint."
For reference the prisma schema as well as manifest.json and db.txt
generator client {
provider = "prisma-client-js"
previewFeatures = ["views"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Level1 {
id Int @id @default(autoincrement())
data String
resources Level1ToResource[]
}
model Level2 {
id Int @id @default(autoincrement())
data String
resources Level2ToResource[]
}
model Level3 {
id Int @id @default(autoincrement())
data String
resources Level3ToResource[]
}
model Level4 {
id Int @id @default(autoincrement())
data String
documents Level4ToDocument[]
}
model Resource {
id Int @id @default(autoincrement())
data String
l1 Level1ToResource[]
l2 Level2ToResource[]
l3 Level3ToResource[]
}
model Level1ToResource {
Level1 Level1 @relation(fields: [A], references: [id])
A Int
Resource Resource @relation(fields: [B], references: [id])
B Int
@@id([A, B])
@@index([A, B])
@@map("_Level1ToResource")
}
model Level2ToResource {
Level2 Level2 @relation(fields: [A], references: [id])
A Int
Resource Resource @relation(fields: [B], references: [id])
B Int
@@id([A, B])
@@index([A, B])
@@map("_Level2ToResource")
}
model Level3ToResource {
Level3 Level3 @relation(fields: [A], references: [id])
A Int
Resource Resource @relation(fields: [B], references: [id])
B Int
@@id([A, B])
@@index([A, B])
@@map("_Level3ToResource")
}
model Document {
id Int @id @default(autoincrement())
data String
l4 Level4ToDocument[]
}
model Level4ToDocument {
Level4 Level4 @relation(fields: [A], references: [id])
A Int
Document Document @relation(fields: [B], references: [id])
B Int
@@id([A, B])
@@index([A, B])
@@map("_Level4ToDocument")
}
Checklist
Hosting
Describe the bug Updating rows on Table with multiple Many-to-Many relationships fails UNIQUE constraint with "duplicate entry ... for key". Despite updating a relation between "Resource" and "Level2", the insert fails because there is already a unique "Resource" and "Level1" relation.
To Reproduce Steps to reproduce the behavior:
Setup a MySQL database with multiple many-many relationships on 1 table (see prisma schema)
model Level2 { id Int @id @default(autoincrement()) data String
resources Resource[] @relation(name: "Level2ToResource") }
model Level3 { id Int @id @default(autoincrement()) data String
resources Resource[] @relation(name: "Level3ToResource") }
model Level4 { id Int @id @default(autoincrement()) data String
documents Document[] @relation(name: "Level4ToDocument") }
model Resource { id Int @id @default(autoincrement()) data String
l1 Level1[] @relation(name: "Level1ToResource") l2 Level2[] @relation(name: "Level2ToResource") l3 Level3[] @relation(name: "Level3ToResource") }
model Document { id Int @id @default(autoincrement()) data String
l4 Level4[] @relation(name: "Level4ToDocument") }