首页 > 解决方案 > mysql v0.2.37 TypeORM 实体迁移:生成 DROP AND ADD where MODIFY would do

问题描述

这是 Deepl 的自动翻译

TypeORM 的迁移:Entity 生成函数在 Mysql 中运行良好。这是我正在使用的设置和命令,以及我在@Entity 中所做的更改。

{
  "scripts": {

    "migrate:generate:training": "ts-node ./node_modules/typeorm/cli.js migration:generate  --config ./server/typeorm/config.ts -n",

    "typeorm": "^0.2.37",
yarn migrate:generate:training newfilename
  @Column({ nullable: false, type: "varchar", length: 12, comment: "グループコードID" })
  codeGroupId!: string;

  @Column({ nullable: false, type: "varchar", length: 24, comment: "グループコードID" })
  codeGroupId!: string;

我进行了上述更改,只是更改了长度,然后migration:generate再次尝试。在生成的迁移文件中,下面列出了更改。

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`nuxt_typescript_training\`.\`m_code\` DROP COLUMN \`codeGroupId\``);
        await queryRunner.query(`ALTER TABLE \`nuxt_typescript_training\`.\`m_code\` ADD \`codeGroupId\` varchar(24) NOT NULL COMMENT 'グループコードID'`);

ALTER TABLE tablename MODIFY就够了。它本来在哪里,它是用→ALTER TABLE tablename MODIFY迁移的。ALTER TABLE tablename DROP COLUMNALTER TABLE tablename ADD

我只是想在不更改类型的情况下进行可以使用 MODIFY 完成的更改,例如调整大小或不为 null。为了防止记录被 DROP COLUMN 清空,我必须将它们修复为手头的 MODIFY。

        // await queryRunner.query(`ALTER TABLE \`nuxt_typescript_training\`.\`m_code\` DROP COLUMN \`codeGroupId\``);
        // await queryRunner.query(`ALTER TABLE \`nuxt_typescript_training\`.\`m_code\` ADD \`codeGroupId\` varchar(24) NOT NULL COMMENT 'グループコードID'`);
        await queryRunner.query(`ALTER TABLE \`nuxt_typescript_training\`.\`m_code\` MODIFY \`codeGroupId\` varchar(24) NOT NULL COMMENT 'グループコードID'`);

有没有一种解决方法可以让事情变得更容易?如果没有更好的解决方法,我们将继续处理当前情况,因为最好手动修复它。

谢谢阅读。

标签: mysqltypescriptmigrationtypeorm

解决方案


推荐阅读