首页 > 解决方案 > 在没有数据库身份的情况下生成迁移

问题描述

我有多个数据库环境,我希望我的迁移文件与身份无关。

但是每次我从实体更改生成迁移时,生成的文件都会添加数据库名称和架构(在 ormconfig.json 中定义)

迁移文件中生成的示例查询行

  ...
  await queryRunner.query(`
          CREATE TABLE "db-revamp".."dataSheet" (
          "id" int NOT NULL IDENTITY(1, 1),
          "name" nvarchar(255) NOT NULL,
          CONSTRAINT "UQ_dc57fa8cd17c5ee3967cb1c7fbb" UNIQUE ("name"),
          CONSTRAINT "PK_c89d8e80116dfe42afbaab1ab0e" PRIMARY KEY ("id")
      )
  `);

   await queryRunner.query(`
            ALTER TABLE "db-revamp"."dbo"."area" DROP CONSTRAINT 
           "PK_1ff32ef8ca684440d59bdbea4cb"
  `);
  ...

  ...
  // WHAT I WANT TO ACHIEVE
  await queryRunner.query(`
          CREATE TABLE "dataSheet" (
          "id" int NOT NULL IDENTITY(1, 1),
          "name" nvarchar(255) NOT NULL,
          CONSTRAINT "UQ_dc57fa8cd17c5ee3967cb1c7fbb" UNIQUE ("name"),
          CONSTRAINT "PK_c89d8e80116dfe42afbaab1ab0e" PRIMARY KEY ("id")
      )
  `);

  // WHAT I WANT TO ACHIEVE
  await queryRunner.query(`
            ALTER TABLE "area" DROP CONSTRAINT 
           "PK_1ff32ef8ca684440d59bdbea4cb"
  `);
  ...

我的ormconfig.json

{
  "type": "mssql",
  "host": "db.myrevamp.com",
  "port": 5050,
  "username": "ultimo",
  "password": "revamp",
  "database": "db-revamp",
  "entities": [
    "dist/**/*.entity{.ts,.js}"
  ],
  "options": {
    "trustServerCertificate": true
  },
  "migrationsTableName": "__migrations",
  "migrations": ["dist/__migration/*{.ts,.js}"],
  "cli": {
    "migrationsDir": "__migration"
  }
}

官方文档中的示例没有解释有关此的详细信息。 https://typeorm.io/#/migrations

有没有办法实现这一点,而不是手动从生成的文件中删除身份?

我正在使用 NestJS 和 MSSQL。

标签: sql-servernestjstypeorm

解决方案


推荐阅读