Postgres NestJS Prisma 迁移 - 数据库错误代码:23502 关系列包含空值

Postgres NestJS Prisma migration - Database error code: 23502 column of relation contains null values

我更新了我的 Prisma ORM 数据库模型,向 'invitation' table.

添加了两个字段 'ahash' 和 'sAddress'

table已经包含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  
}


这里的问题是 ahashsAddress 都是必填字段。但是,对于您的数据库中现有的 6 个 rows/records,它们并不存在。

如果您想向现有数据库添加新列而不导致数据丢失,您需要确保新的 columns/field 是可选的。这可以在 Prisma 中通过使用 ?.

标记字段类型来完成

如果您需要必填字段,可以分三步完成:

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

在第 3 步中,您将不再收到错误,因为 none 条记录包含 ahashsAddress 字段的 null 值。