不允许外键约束(Prisma)

Adr*_*sen 2 mysql prisma planetscale

当前在尝试将架构更改推送到 Planetscale 数据库时遇到问题。不确定我可能做错了什么。我对 prisma 相当陌生,所以我希望得到一些帮助:)。

generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native"]
}

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

model User {
  id    String @id @default(uuid())
  notes Note[]
}

model Note {
  id     String @id @default(uuid())
  userId String @unique
  user   User   @relation(fields: [userId], references: [id])
}
Run Code Online (Sandbox Code Playgroud)

尝试过迁移。如果一对多的关系被删除,错误就会消失。

小智 18

在你的schema.prisma文件中

datasource db {
  provider     = "mysql"
  url          = env("DATABASE_URL")
  
  // Add this
  relationMode = "prisma"
}
Run Code Online (Sandbox Code Playgroud)

原因可以在相关模式的 prisma 文档中找到。它规定如下:

对于关系数据库,可用的选项有:

  • foreignKeys:这用外键处理数据库中的关系。这是所有关系数据库连接器的默认选项,如果块relationMode中未明确设置,则该选项处于活动状态datasource

  • prisma:这模拟 Prisma 客户端中的关系。当您将 MySQL 连接器与 PlanetScale 数据库结合使用时,您还应该启用此选项。