NestJS TypeORM更改了主键的类型,是否会影响数据库中已有的值,如何安全迁移?

NestJS TypeORM change type of primary key, will it impact the existing values in the db, how to migrate them safely?

提问人:madhan kumar 提问时间:11/12/2023 更新时间:11/12/2023 访问量:31

问:

我正在使用 NestJS,有一个 BaseEntity 作为配置

  @PrimaryGeneratedColumn()
  id: number;

但是,我想改变这一点

  @PrimaryGeneratedColumn()
  id: string;

我正在准备迁移脚本,但我想知道,这会影响表中的现有值还是隐式转换将由 DB 处理?

我正在使用 TypeORM、Postgresql DB。

打字稿 postgresql nestjs typeorm nestjs-typeorm

评论

0赞 Parzh from Ukraine 11/12/2023
如果准备迁移,则此转换的确切方式由迁移脚本的逻辑定义。另一方面,如果您要使用不迁移的设置,则转换将由您选择的设置处理。sync

答:

0赞 Maimoona Abid 11/12/2023 #1

在 TypeORM 中,将主键的类型从数字更改为字符串可能会影响数据库的当前值,因此必须谨慎处理迁移。主键类型不会由 PostgreSQL 隐式转换,因此您需要显式处理数据迁移。

但是,在进行任何更改之前,请备份 PostgreSQL 数据库。接下来,使用 TypeORM 创建新的迁移脚本并更改 id 列的类型。在迁移脚本中创建自定义逻辑,以管理当前数字 ID 到字符串 ID 的转换。这可能包括创建新列、更新值和删除旧列。

希望它能:)