繁体   English   中英

迁移文件错误:“字符串”类型的参数不可分配给“任何 []”类型的参数

[英]Error on migration file: Argument of type 'string' is not assignable to parameter of type 'any[]'

我正在尝试使用 typeorm 创建迁移。 这是我的文件:

import { MigrationInterface, QueryRunner } from "typeorm"

export class changeAddressNumberDatatype1654614315001 implements MigrationInterface {
    async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(
            `ALTER TABLE "accounts" MODIFY "address_number" varchar(50)`,
            `ALTER TABLE "service-request" MODIFY "address_number" varchar(50)`
        )
    }

    async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(
            `ALTER TABLE "accounts" MODIFY "address_number" int`,
            `ALTER TABLE "service-request" MODIFY "address_number" int`
        )
    }
}

我得到的错误是:

src/migration/1654614315001-changeAddressNumberDatatype.ts:7:13 - 错误 TS2345:“字符串”类型的参数不可分配给“任何 []”类型的参数。

如果我一次只修改一张表,它不会给我任何错误。 这是这样做的方法吗? 或者我可以在同一个迁移中修改多个表吗?

无法使用方法query修改多个表的列。

做你想做的事的正确方法是一一修改:

export class changeAddressNumberDatatype1654614315001
  implements MigrationInterface
{
  async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "accounts" MODIFY "address_number" varchar(50)`,
    );
    await queryRunner.query(
      `ALTER TABLE "service-request" MODIFY "address_number" varchar(50)`,
    );
  }

  async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.query(
      `ALTER TABLE "accounts" MODIFY "address_number" int`,
    );
    await queryRunner.query(
      `ALTER TABLE "service-request" MODIFY "address_number" int`,
    );
  }
}

如果您不想为此使用字符串,则可以使用方法changeColumnchangeColumns来自同一表的多个列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM