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



我更新了我的Prisma ORM数据库模型,在' invite '表中添加了两个字段'ahash'和'sAddress'。

表中已经包含了6行数据

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

我如何满足null值并将模型更新顺利迁移到数据库?

请给我一个分步账目。我是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行/记录,它们不存在。

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

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

  1. 首先在prism模式中创建新的ahashsAddress字段作为可选字段,然后运行迁移。
  2. 运行脚本更新所有现有记录,使它们具有ahashsAddress字段的值。
  3. 在你的Prisma模式中将这两个字段都标记为必填,然后运行迁移。

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