如何让TypeORM迁移不自动创建migrations与typeorm_metadata表?
解决TypeORM迁移不自动创建migrations和typeorm_metadata表的方法
如果你只是想借助TypeORM的迁移工具执行DDL命令,不想让它自动生成迁移跟踪表,有两种实用方法:
CLI执行时添加
--no-migrations-table参数
直接在运行迁移命令时加上这个参数,比如:typeorm migration:run --no-migrations-table这样这次迁移执行过程中,TypeORM不会创建或使用
migrations和typeorm_metadata表,也不会记录这次迁移的执行状态。注意:下次再运行迁移时,如果不加这个参数,TypeORM会认为这次迁移从未执行过,可能会重复执行,所以适合一次性的DDL操作。自定义迁移并手动控制执行逻辑
如果你是自己编写迁移文件,可以在迁移类里直接使用queryRunner执行原生DDL语句,同时在运行迁移时通过CLI参数禁用跟踪表。比如在迁移文件里:import { MigrationInterface, QueryRunner } from "typeorm"; export class CustomDDLMigration1234567890 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise<void> { // 直接执行你的DDL命令 await queryRunner.query("CREATE TABLE custom_table (id INT PRIMARY KEY)"); } public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.query("DROP TABLE custom_table"); } }然后同样用
--no-migrations-table参数运行这个迁移,避免生成跟踪表。
另外要注意:如果你的项目平时依赖这两张表做迁移跟踪,这种一次性操作后,记得恢复正常的迁移执行方式,避免破坏原有迁移记录体系。
内容的提问来源于stack exchange,提问作者mleko
相关产品推荐
相关产品推荐

