postgresql - 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
}
解决方案
这里的问题是,ahash
并且sAddress
都是必填字段。但是,对于数据库中的 6 个现有行/记录,它们不存在。
如果要向现有数据库添加新列而不导致数据丢失,则需要确保新列/字段是可选的。这可以在 Prisma 中通过用 标记字段的类型来完成?
。
如果您需要该字段是强制性的,您可以分三个步骤完成:
- 首先在您的 prisma 模式中创建新的
ahash
和sAddress
字段作为可选并运行迁移。 - 运行脚本以更新所有现有记录,以便它们具有
ahash
和sAddress
字段的值。 - 在您的 Prisma 架构中将这两个字段标记为必填并运行迁移。
在步骤 3 中,您将不再收到错误,因为没有任何记录包含and字段的null
值。ahash
sAddress
推荐阅读
- r - 仅使用 R 中的 plot_ly() 绘制非零列的折线图
- linux - sed 命令中的问题
- angular - 具有差异加载的 Angular Web 组件给出:未捕获的类型错误:无法读取未定义的属性 'ɵɵdefineComponent'
- typescript - Firebase 函数 - 在 OnCreate 函数之后查询 Firestore
- javascript - 如何使用 react 和 typescript 修复错误对象可能是未定义的?
- pentaho-spoon - 在执行 sql 任务 Pentaho 勺子 7 中提交问题
- java - MQTT 代理和 RabbitMQ 有什么区别
- java - 多个线程处理相同的 ResultSet 记录
- python-3.x - Python 3,递归函数 - 为什么代码 B 可以工作,但代码 A 不行?
- reactjs - Microblink SDK:只拍摄矩形内的照片