首页 > 解决方案 > 更改列长将删除列

问题描述

我的课:

@Entity()
export class UserMemeber extends BsEntity {
  @Index({ unique: true })
  @Column({
    length:11
  })
  userId: string;
}

每当我更改长度时,typeorm 都会删除并重新创建该列,并且数据会丢失!我的设置有问题吗?如果我想在使用同步时更改长度怎么办?

标签: typeorm

解决方案


@Jared Farrish 谢谢你的回复。

我的意思是,改变列的长度。为什么要删除列?即使进行迁移,数据也会丢失。

export class article implements MigrationInterface {

    public async up(queryRunner: QueryRunner): Promise<any> {
        await queryRunner.query("ALTER TABLE `article` DROP COLUMN `name`");//lost data
        //why not this:ALTER TABLE `article` MODIFY  `name` varchar(33) NOT NULL
        await queryRunner.query("ALTER TABLE `article` ADD `name` varchar(25) NOT NULL");
    }

    public async down(queryRunner: QueryRunner): Promise<any> {
        await queryRunner.query("ALTER TABLE `article` DROP COLUMN `name`");
        await queryRunner.query("ALTER TABLE `article` ADD `name` varchar(12) NOT NULL");//
    }

}

推荐阅读