typeorm 实体字段类型和数据库类型对不上导致数据库数据消失

使用nestjs和typeorm开发时,启用synchronize: true,后。实体字段比如title是string类型,数据库的title是varchar(1024)这样会导致数据消失,因为string对应的是varchar(255)(经过本人测试)。字段默认string,数据库varchar(255),数据不会丢失

解决办法:

  • 使用装饰器将实体的varchar字符数和数据库的字符数改为一致 @Column('varchar', { length: 1024 }),必须完全对应,少一多一字符都不行!!!
import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';

@Entity('book')
export class Book {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  @Unique(['fileName'])
  fileName: string;

  @Column('varchar', { length: 1024 })
  cover: string;

  @Column('varchar', { length: 1024 })
  title: string;

  // 不指定数据会丢失
  @Column('varchar', { length: 1024 })
  author: string;

  // 数据不会丢失
  @Column()
  publisher: string;

  @Column()
  bookId: string;

  @Column()
  category: number;

  @Column()
  categoryText: string;

  @Column('varchar', { length: 10 })
  language: string;

  @Column()
  rootFile: string;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值