Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

504
Views
La restricción única falló en la restricción: `User_Account_userId_key` en prisma

hola tengo tres modelos

 model User { user_id Int @id @default(autoincrement()) email String @unique name String? User_Account User_Account[] } model Account { account_id Int @id @default (autoincrement()) @unique email String bank String createdAt DateTime @default(now()) User_Account User_Account[] } model User_Account { id Int @id @default(autoincrement()) accountId Int userId Int User User @relation(fields: [userId], references: [user_id]) Account Account @relation(fields: [accountId], references: [account_id]) }

Estoy tratando de sembrar mi base de datos así

 const data = [ { id: 1, email: 'pranit1@mf.com', name: 'Pranit1', bank: 'VCB', ids: [1,1] }, { id: 2, email: 'pranit1@mf.com', name: 'Pranit1', bank: 'ACB', ids: [1,2] }, { id: 3, email: 'pranit3@mf.com', name: 'Pranit3', bank: 'VCB', ids: [2,3] } ] const users = await prisma.$transaction( data.map(user => prisma.user.upsert({ where: { email: user.email }, update: {}, create: { name: user.name, email:user.email }, }) ) ); const accounts = await prisma.$transaction( data.map(account => prisma.account.upsert({ where: { account_id: account.id }, update: {}, create: { bank: account.bank , email :account.email }, }) ) ); const user_accounts = await prisma.$transaction( data.map(uacc =>{ console.log(uacc); return prisma.user_Account.upsert({ where: { id: uacc.id }, update: {id: uacc.id}, create:{ userId: uacc.ids[0], accountId: uacc.ids[1] }, })} ) );

Sin embargo, estoy recibiendo un

La restricción única falló en la restricción: User_Account_userId_key

Los datos en prisma studio se generan como se muestra en la imagen ingrese la descripción de la imagen aquí

Simplemente estoy tratando de crear usuarios y cuentas y un usuario puede asociarse con varias cuentas. Su relación se muestra en la tabla User_Account. No puedo ver por qué recibo un error de restricción única cuando no tengo la etiqueta @unique en el ID de usuario

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No pude reproducir el error de mi lado. Pero sospecho que ya tenía registros en la base de datos y entran en conflicto con las identificaciones de su sembradora. Además, hay algunas mejoras que podría hacer en su esquema para que sea más simple.

  1. Como no tiene detalles adicionales sobre la relación de muchos a muchos, puede deshacerse del modelo User_Account y dejar que Prisma lo maneje por usted.
  2. En el sembrador, puede aprovechar las funciones de anidamiento de Prisma para no tener que vincular manualmente los registros. De esa manera, no tienes que preocuparte por las identificaciones.

sugerencia de esquema.prisma

 model User { id Int @id @default(autoincrement()) email String @unique name String? accounts Account[] } model Account { id Int @id @unique @default(autoincrement()) email String bank String users User[] createdAt DateTime @default(now()) }

sugerencia de seed.js

 const { PrismaClient } = require("@prisma/client"); const prisma = new PrismaClient(); async function main() { const usersData = [ { email: "pranit1@mf.com", name: "Pranit1", banks: ["VCB", "ACB"], }, { email: "pranit3@mf.com", name: "Pranit3", banks: ["VCB"], }, ]; const users = await prisma.$transaction( usersData.map((user) => prisma.user.upsert({ where: { email: user.email }, update: {}, create: { name: user.name, email: user.email, accounts: { create: user.banks.map((bank) => ({ email: user.email, bank, })), }, }, }) ) ); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!