V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cs3230524
V2EX  ›  Node.js

TypeOrm 使用 PrimaryGeneratedColumn 注解报错。。

  •  
  •   cs3230524 · 2020-11-23 23:32:50 +08:00 · 3401 次点击
    这是一个创建于 1450 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就很普通的一个实体

    @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 
    
    
    

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

    9 条回复    2020-12-26 16:36:21 +08:00
    xiangwan
        1
    xiangwan  
       2020-11-23 23:52:25 +08:00 via Android
    检查下主键数据类型
    Zchary
        2
    Zchary  
       2020-11-24 09:04:38 +08:00 via iPhone
    生成 schema 了吗?数据库查下
    cs3230524
        3
    cs3230524  
    OP
       2020-11-24 10:06:13 +08:00
    @Zchary 我数据都插进去了肯定生成了啊
    Zchary
        4
    Zchary  
       2020-11-24 12:15:56 +08:00 via iPhone
    指定 auoto increment 试试
    cs3230524
        5
    cs3230524  
    OP
       2020-11-24 17:38:11 +08:00
    @Zchary 我都试遍了 @PrimaryGeneratedColumn('increment')也是不行的,只有 uuid 能用。同样的代码在 windows 就没问题,调试跟源码找不到他的 bug 。。。哎,这都啥破框架啊,连个 demo 都跑不了,issue 也没人管。我很无语。
    cs3230524
        6
    cs3230524  
    OP
       2020-11-24 17:39:06 +08:00
    这写一半了也不可能换,怕的就是生产环境出这样的问题我就要倒大霉了
    hongweiliuruige
        7
    hongweiliuruige  
       2020-11-24 18:40:34 +08:00
    不穿参数默认就是 increment 数值自增,你启动时还会插数据?,好好看看你代码把
    ccsulzf0627
        8
    ccsulzf0627  
       2020-12-23 21:44:13 +08:00
    同样的问题,我在测试环境没有这个问题,但是去生产就有,首先我的数据 id 是自增的,但是在 entity 的时候写成了 PrimaryColumn,然后在生产就报错了,但是换成 PrimaryGeneratedColumn 就没问题了
    cs3230524
        9
    cs3230524  
    OP
       2020-12-26 16:36:21 +08:00
    @ccsulzf0627 我是数据库版本问题,换了就没问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3272 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:40 · PVG 08:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.