首页 > 解决方案 > Postgres NestJS Prisma 迁移 - 数据库错误代码:23502 关系列包含空值

问题描述

我通过在“邀请”表中添加另外两个字段“ahash”和“sAddress”来更新我的 Prisma ORM 数据库模型。

该表已经包含 6 行数据。

当我尝试将新更改迁移到 Postgresql 数据库时,出现错误Database error code: 23502. ERROR: column "aHash" of relation "Invitation" contains null values.

如何满足空值并将模型更新平滑迁移到数据库?

请给我一个逐步帐户。我是 Prisma 迁移的新手。

提前致谢!

Prisma 邀请模型如下所示。


model Invitation {
  id                      String        @id @db.Uuid
  workId                  String        @db.Uuid
  work                    Work          @relation(fields: [workId], references: [id])
  status                  RequestStatus
  coId                    String        @db.Uuid
  oSignature              String
  note                    String  
  aHash                   String
  sAddress                String
  createdAt               DateTime
  respondedAt             DateTime  
}


标签: postgresqlnestjsprisma

解决方案


这里的问题是,ahash并且sAddress都是必填字段。但是,对于数据库中的 6 个现有行/记录,它们不存在。

如果要向现有数据库添加新列而不导致数据丢失,则需要确保新列/字段是可选的。这可以在 Prisma 中通过用 标记字段的类型来完成?

如果您需要该字段是强制性的,您可以分三个步骤完成:

  1. 首先在您的 prisma 模式中创建新的ahashsAddress字段作为可选并运行迁移。
  2. 运行脚本以更新所有现有记录,以便它们具有ahashsAddress字段的值。
  3. 在您的 Prisma 架构中将这两个字段标记为必填并运行迁移。

在步骤 3 中,您将不再收到错误,因为没有任何记录包含and字段的null值。ahashsAddress


推荐阅读