You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeORM迁移重复生成默认值问题求助

解决TypeORM迁移重复生成默认值语句的问题

1. 让实体默认值和数据库存的完全一致

TypeORM生成迁移是对比实体定义和数据库元数据,要是两边的默认值字符串有差异(比如多了括号、空格不一样、大小写不同),就会误以为需要更新。

比如你用PostgreSQL,先查一下数据库里实际存的默认值:

SELECT column_default FROM information_schema.columns 
WHERE table_name = 'forget_passwords' AND column_name = 'expired_at';

然后把实体里的默认值改成和查询结果完全一样的写法,注意用函数式包裹(不要直接写字符串):

@Column({
  type: 'timestamp',
  default: () => "now() + '00:03:00'::interval"
})
expired_at: Date;

2. 同步数据库和实体的元数据

先把所有已生成的迁移都执行一遍:typeorm migration:run
然后跑typeorm schema:log看看实体和数据库有没有差异,要是显示无差异,之后生成迁移就不会重复出那行代码了。

3. 升级TypeORM到最新稳定版

有些旧版本的TypeORM在默认值对比逻辑上有bug,直接升级到最新版(比如npm install typeorm@latest)可能就能解决问题。

4. 极端情况:手动处理迁移

如果前面的方法都不管用,每次生成迁移后手动删掉重复的那行语句就行,不过这是临时方案,还是建议先搞定根源问题。

内容的提问来源于stack exchange,提问作者Farzad.Jafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:01:18