Перейти к основному содержанию

Фиктивные миграции и откаты

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Вы можете выполнить миграцию в фиктивном режиме с помощью флага --fake (-f сокращённо). Это добавит миграцию в таблицу migrations без фактического выполнения. Полезно, когда изменения уже внесены вручную или миграции были выполнены внешним инструментом, но нужно сохранить историю.

typeorm migration:run -d path-to-datasource-config --fake

Фиктивный режим также доступен для откатов.

typeorm migration:revert -d path-to-datasource-config --fake

Режимы транзакций

По умолчанию TypeORM выполняет все миграции в одной транзакции (флаг --transaction all). Для детального контроля используйте:

  • --transaction each — каждая миграция в отдельной транзакции
  • --transaction none — отключение транзакций

Дополнительно к этим флагам, вы также можете переопределить поведение транзакции для каждой миграции, установив свойство transaction в MigrationInterface в true или false. Это работает только в режимах транзакции each или none.

import { MigrationInterface, QueryRunner } from "typeorm"

export class AddIndexTIMESTAMP implements MigrationInterface {
transaction = false

async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE INDEX CONCURRENTLY post_names_idx ON post(name)`,
)
}

async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX CONCURRENTLY post_names_idx`)
}
}