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
相关产品推荐
相关产品推荐

