Vai al contenuto principale

Simulazione di Migrazioni e Rollback

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Puoi simulare l'esecuzione di una migrazione usando il flag --fake (-f in forma abbreviata). Questo aggiungerà la migrazione alla tabella delle migrazioni senza eseguirla. È utile per migrazioni create dopo modifiche manuali già apportate al database o quando migrazioni sono state eseguite esternamente (ad esempio da un altro strumento o applicazione), e desideri comunque mantenere una cronologia delle migrazioni coerente.

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

Questo è possibile anche con i rollback.

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

Modalità di transazione

Per impostazione predefinita, TypeORM eseguirà tutte le migrazioni all'interno di un'unica transazione che le racchiude. Questo corrisponde al flag --transaction all. Se necessiti un controllo più granulare sulle transazioni, puoi usare il flag --transaction each per racchiudere ogni migrazione individualmente, o il flag --transaction none per non racchiudere affatto le migrazioni in transazioni.

Oltre a questi flag, puoi sovrascrivere il comportamento della transazione per singola migrazione impostando la proprietà transaction su MigrationInterface a true o false. Questo funziona solo nelle modalità di transazione each o 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`)
}
}