Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
TypeORM: "No migrations pending" when attempting to run migrations manually

I have a new web app and I've written a migrator to create a user table. However, no matter what I try, typeorm does not appear to find this migrator and hence, does not run it.

My file structure (other files/folders not shown):

├── Server
│   ├── dist
|   |   ├── Migrations
|   |   |   ├── 1234567891234567890-AddUserTable.js
|   |   |   ├── 1234567891234567890-AddUserTable.js.map
|   |   |   ├── 1234567891234567890-AddUserTable.d.ts
│   ├── src
|   |   ├── Migrations
|   |   |   ├── 1234567891234567890-AddUserTable.ts
|   |   ├── app.module.ts

app.module.ts

@Module({
    imports: [
        ConfigModule.forRoot({ envFilePath: '.env' }),
        TypeOrmModule.forRootAsync({
            imports: [ConfigModule],
            useFactory: (configService: ConfigService) => ({
                type: 'mysql',
                host: configService.get('TYPEORM_HOST'),
                port: +configService.get<number>('TYPEORM_PORT'),
                username: configService.get('TYPEORM_USERNAME'),
                password: configService.get('TYPEORM_PASSWORD'),
                database: configService.get('TYPEORM_DATABASE'),
                synchronize: configService.get('TYPEORM_SYNCHRONIZE'),
                entities: [__dirname + '/**/*.entity{.ts,.js}'],
                migrations: [__dirname + '/Migrations/**/*.js'],
                migrationsRun: false,
                cli: {
                    migrationsDir: './Migrations',
                },
            }),
            inject: [ConfigService],
        }),
    ],
    controllers: [],
    providers: [],
})
export class AppModule {
    constructor(private connection: Connection) {}
}

In order to run this, in my console window, I type: nest start in order get my Server started.

Then, I run npx typeorm migration:run which I get:

query: SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'myDB' AND `TABLE_NAME` = 'migrations'
query: SELECT * FROM `myDB`.`migrations` `migrations` ORDER BY `id` DESC
No migrations are pending

If I look in my DB, I see a migrations table with no entries inside.

I have tried to delete my migrator file and create it again with a more recent timestamp and that does not work either.

npx typeorm migration:create -n "MyMigratorName"

Any help would be greatly appreciated.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

For anyone coming here for help:

The config above mentions migrations to be found in js files:

migrations: [__dirname + '/Migrations/**/*.js'],

However from the folder structure its clear that migrations are written in ts files not js.

To run migrations from ts follow the officially recommended way described here:

https://github.com/typeorm/typeorm/blob/master/docs/using-cli.md#if-entities-files-are-in-typescript

Also in that case don't forget to update the migrations blob to be ts:

migrations: [__dirname + '/Migrations/**/*.ts'],

If you want to run the migrations from js files you will have to provide the location to be from dist folder after the ts files have been compiled to js form.

over 4 years ago · Santiago Trujillo Denunciar

0

Typeorm only loads migration from files with js extension,

In the ormconfig file where you set up your connection;

{
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "username": "test",
    "password": "test",
    "database": "test",
    "entities": ["entity/*.js"],
    "migrationsTableName": "custom_migration_table",
    "migrations": ["migration/*.js"],
    "cli": {
        "migrationsDir": "migration"
    }
}

"migrations": ["migration/*.js"] - indicates that typeorm will load migrations from the given "migration" directory.

if your migration folder is stored in a dist or src directory,

"migrations": ["migration/*.js"] will now be "migrations": ["dist/migration/*.js"] or "migrations": ["src/migration/*.js"], the * means any migration filename. Just make sure whatever directory/directories placed here ["migration/*.js"] leads to where your migration file(s) are

"migrationsDir": "migration"- indicates that the CLI must create new migrations in the "migration" directory. so whatever directory you specify here is where your migration files will be created.

Please note that if your migration files have typescript extensions(.ts), you have to compile your migrations files into javascript files if not typeorm will not find them.

over 4 years ago · Santiago Trujillo Denunciar

0

In addition to answer given by @Upka Uchechi

If you're using typescript, you need to run the following commands

$ npm run build   # This will compile the typescript files into JavaScript files 
$ npm run typeorm -- migration:run

To give a bit more context. If your configuration files are lookated at <PROJECT ROOT>/db-migrations, the build command above should move the compiled JavaScript files to <PROJECT ROOT>/dist/db-migrations. For that, your configuration file would look like this

  ... 
  "migrations": ["dist/db-migrations/*.js"],
  ...
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda