You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TypeORM CLI与NestJS执行迁移时提示No migrations are pending问题

解决TypeORM 0.3.x + NestJS TypeORM 9.x迁移找不到文件的问题

针对你遇到的迁移创建成功但执行时提示No migrations are pending的问题,以下是几个针对性的排查和解决方法:

1. 确认迁移文件结构正确性

确保迁移文件正确实现MigrationInterface,且类名符合{迁移名称}{时间戳}的命名规则,示例:

import { MigrationInterface, QueryRunner } from "typeorm";

export class Chat1676252827402 implements MigrationInterface {
    public async up(queryRunner: QueryRunner): Promise<void> {
        // 你的迁移逻辑
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        // 回滚逻辑
    }
}

若类未正确实现接口或命名不符合规范,TypeORM会无法识别该文件为迁移文件。

2. 修正迁移路径解析逻辑

在postgres.config.ts中,改用基于项目根目录的绝对路径配置,避免__dirname在ts-node和编译后环境的解析差异:

import { resolve } from 'path';

// 替换原migrations配置
migrations: [resolve(process.cwd(), 'src/configs/database/migrations/**/*.{ts,js}')],

3. 调整CLI命令执行方式

方式一:使用编译后的JS文件执行迁移

先执行项目编译(如yarn build),再用编译后的DataSource配置文件运行迁移:

// package.json新增命令
"migration:run:prod": "typeorm migration:run -d dist/configs/database/dataSource.config.js"

执行命令:yarn migration:run:prod

方式二:优化ts-node CLI命令

确保ts-node能正确解析路径,调整CLI命令为:

"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js",
"migration:run": "yarn typeorm migration:run -d src/configs/database/dataSource.config.ts"

添加.js后缀指向typeorm的CLI入口文件,避免环境解析问题。

4. 检查DataSource配置细节

  • 确认databaseConfig中的name为"default",保证CLI使用的数据源名称与数据库连接一致
  • 若曾手动修改过迁移表名,需在配置中明确指定:
    migrationsTableName: 'migrations', // 与数据库中实际表名保持一致
    

5. 验证迁移文件是否被加载

在dataSource.config.ts中添加日志,确认DataSource是否正确加载迁移文件:

import { DataSource } from "typeorm";
import { databaseConfig } from "./postgres.config";

export const AppDataSource = new DataSource(databaseConfig);

// 打印加载的迁移文件列表
AppDataSource.initialize().then(() => {
  console.log('已加载的迁移文件:', AppDataSource.migrations);
}).catch(err => {
  console.error('数据源初始化失败:', err);
});

执行ts-node src/configs/database/dataSource.config.ts,若输出中没有目标迁移文件,说明路径配置仍有问题。

内容的提问来源于stack exchange,提问作者charlescol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:46:14