就很普通的一个实体
@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
求大神救救...我人都傻了。
1
xiangwan 2020-11-23 23:52:25 +08:00 via Android
检查下主键数据类型
|
2
Zchary 2020-11-24 09:04:38 +08:00 via iPhone
生成 schema 了吗?数据库查下
|
4
Zchary 2020-11-24 12:15:56 +08:00 via iPhone
指定 auoto increment 试试
|
5
cs3230524 OP @Zchary 我都试遍了 @PrimaryGeneratedColumn('increment')也是不行的,只有 uuid 能用。同样的代码在 windows 就没问题,调试跟源码找不到他的 bug 。。。哎,这都啥破框架啊,连个 demo 都跑不了,issue 也没人管。我很无语。
|
6
cs3230524 OP 这写一半了也不可能换,怕的就是生产环境出这样的问题我就要倒大霉了
|
7
hongweiliuruige 2020-11-24 18:40:34 +08:00
不穿参数默认就是 increment 数值自增,你启动时还会插数据?,好好看看你代码把
|
8
ccsulzf0627 2020-12-23 21:44:13 +08:00
同样的问题,我在测试环境没有这个问题,但是去生产就有,首先我的数据 id 是自增的,但是在 entity 的时候写成了 PrimaryColumn,然后在生产就报错了,但是换成 PrimaryGeneratedColumn 就没问题了
|
9
cs3230524 OP @ccsulzf0627 我是数据库版本问题,换了就没问题了。
|