TypeOrm 使用 PrimaryGeneratedColumn 注解报错。。

2020-11-23 23:32:50 +08:00
 cs3230524

就很普通的一个实体

@Entity()
export class Spm {
    @PrimaryGeneratedColumn()
    //@PrimaryGeneratedColumn("uuid") //这个没问题,可以正常运行
    id: number;
    @Column()
    type: string;
}

然后执行后报这个错误,并且插入了一条 id 为 0 的数据,重复执行依旧插入 0,而不是 1 。

Error: Cannot update entity because entity id is not set in the entity.

这个错误在这里 170 行报出:

//https://github.com/typeorm/typeorm/blob/c4a36da62593469436b074873eba186f0f8b990d/src/query-builder/ReturningResultsEntityUpdator.ts#L119-L130

同样的代码在 windows 是没问题的,所以我怀疑是系统环境问题?

目前的系统环境:


| Operating System    | MacOS 10.15.4
| Node.js version     | v10.15.3 
| @nestjs/typeorm     | v^7.1.5
| Typescript version  | v^3.7.4 
| TypeORM version     | v^0.2.29 


求大神救救...我人都傻了。

3433 次点击
所在节点    Node.js
9 条回复
xiangwan
2020-11-23 23:52:25 +08:00
检查下主键数据类型
Zchary
2020-11-24 09:04:38 +08:00
生成 schema 了吗?数据库查下
cs3230524
2020-11-24 10:06:13 +08:00
@Zchary 我数据都插进去了肯定生成了啊
Zchary
2020-11-24 12:15:56 +08:00
指定 auoto increment 试试
cs3230524
2020-11-24 17:38:11 +08:00
@Zchary 我都试遍了 @PrimaryGeneratedColumn('increment')也是不行的,只有 uuid 能用。同样的代码在 windows 就没问题,调试跟源码找不到他的 bug 。。。哎,这都啥破框架啊,连个 demo 都跑不了,issue 也没人管。我很无语。
cs3230524
2020-11-24 17:39:06 +08:00
这写一半了也不可能换,怕的就是生产环境出这样的问题我就要倒大霉了
hongweiliuruige
2020-11-24 18:40:34 +08:00
不穿参数默认就是 increment 数值自增,你启动时还会插数据?,好好看看你代码把
ccsulzf0627
2020-12-23 21:44:13 +08:00
同样的问题,我在测试环境没有这个问题,但是去生产就有,首先我的数据 id 是自增的,但是在 entity 的时候写成了 PrimaryColumn,然后在生产就报错了,但是换成 PrimaryGeneratedColumn 就没问题了
cs3230524
2020-12-26 16:36:21 +08:00
@ccsulzf0627 我是数据库版本问题,换了就没问题了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728531

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX