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

Typeorm无法检测待执行迁移问题求助

TypeORM迁移执行提示"No migrations are pending"问题排查方案
  • 检查迁移文件命名格式
    TypeORM默认要求迁移文件遵循[时间戳]-[迁移名称].ts的命名规则(例如1698765432100-CreatePlaylistTable.ts)。如果文件名不符合这个格式,TypeORM会无法识别到待执行的迁移文件。

  • 验证数据源配置中的迁移路径

    • 使用ts-node-commonjs执行时,确保路径指向src下的TS文件,建议使用绝对路径避免解析问题:
      import * as path from 'path';
      
      export const dataSourceConfig: DataSourceOptions = {
          // 其他配置...
          migrations: [path.join(__dirname, 'src/migrations/*.ts')],
      };
      
    • 如果已经编译到dist目录,需切换到JS文件执行:
      命令改为 npx typeorm migration:run -d dist/database.config.js,同时数据源配置的migrations路径改为dist/migrations/*.js。
  • 确认迁移文件内容正确性
    每个迁移文件必须正确导出继承MigrationInterface的类,示例:

    import { MigrationInterface, QueryRunner } from "typeorm";
    
    export class CreatePlaylistTable1698765432100 implements MigrationInterface {
        public async up(queryRunner: QueryRunner): Promise<void> {
            // 迁移逻辑
        }
    
        public async down(queryRunner: QueryRunner): Promise<void> {
            // 回滚逻辑
        }
    }
    

    若类名错误、未正确实现接口或导出方式有误,TypeORM会忽略该文件。

  • 验证环境变量与数据库连接
    数据源配置依赖环境变量,需确认执行命令时环境变量已正确加载,避免连接到错误的数据库。可临时在配置中添加console.log(process.env.DATABASE_NAME),验证实际连接的数据库是否为Spotify_Playlist_Showcase_Dev。

  • 手动指定迁移文件执行测试
    尝试直接指定单个迁移文件执行,排查路径或文件本身问题:

    npx typeorm-ts-node-commonjs migration:run -d database.config.ts -p src/migrations/1698765432100-CreatePlaylistTable.ts
    

    若此命令能正常执行,说明全局路径匹配存在问题;若仍提示无待执行迁移,则需检查文件内容是否符合规范。

  • 清除TypeORM缓存
    若存在缓存干扰,可删除node_modules/.cache目录(若存在),重启终端后重新执行迁移命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:18:36