Prisma查询报错:数据库无OwnerID列,模型与数据库匹配问题
解决方案
不需要新增OwnerID列,是你的Prisma模型配置有误,问题出在字段与数据库列的映射关系上。
问题原因
你在模型中通过@relation(fields: [OwnerID], references: [ID])指定用OwnerID字段关联HubUser,但Prisma默认会将模型字段名直接映射为数据库列名,它会去数据库中查找OwnerID列,而你的数据库实际外键列是Owner,因此报错。
两种修正方式
方式一:修改模型字段名匹配数据库列
直接将模型中的OwnerID字段名改为Owner,让字段名与数据库列名一致:
model Organization { ID Int @id @unique @default(autoincrement()) Name String @db.VarChar(50) UniqueName String @unique @db.VarChar(12) LoginScheme String @unique @db.VarChar(100) Owner HubUser @relation(fields: [Owner], references: [ID]) Owner Int @@map("organizations") }
方式二:用@map注解映射字段到数据库列
如果不想修改模型字段名,给OwnerID字段添加@map注解,指定它对应数据库中的Owner列:
model Organization { ID Int @id @unique @default(autoincrement()) Name String @db.VarChar(50) UniqueName String @unique @db.VarChar(12) LoginScheme String @unique @db.VarChar(100) Owner HubUser @relation(fields: [OwnerID], references: [ID]) OwnerID Int @map("Owner") @@map("organizations") }
后续操作
修正模型后,重新运行:
npx prisma generate
生成新的客户端代码,之后查询就能正常关联数据库的Owner列了。
内容的提问来源于stack exchange,提问作者user17145524
相关产品推荐
相关产品推荐

