Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
TypeORM: "No hay migraciones pendientes" al intentar ejecutar migraciones manualmente

Tengo una nueva aplicación web y he escrito un migrador para crear una tabla de usuarios. Sin embargo, no importa lo que intente, typeorm no parece encontrar este migrador y, por lo tanto, no lo ejecuta.

Mi estructura de archivos (no se muestran otros archivos/carpetas):

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

aplicación.módulo.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) {} }

Para ejecutar esto, en la ventana de mi consola, escribo: nest start para iniciar mi servidor.

Luego, ejecuto npx typeorm migration:run que obtengo:

 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

Si miro en mi base de datos, veo una tabla de migrations sin entradas dentro.

He intentado eliminar mi archivo de migrador y crearlo de nuevo con una marca de tiempo más reciente y tampoco funciona.

 npx typeorm migration:create -n "MyMigratorName"

Cualquier ayuda sería muy apreciada.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Para cualquiera que venga aquí en busca de ayuda:

La configuración anterior menciona las migraciones que se encuentran en los archivos js:

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

Sin embargo, a partir de la estructura de carpetas, está claro que las migraciones se escriben en archivos ts, no en js.

Para ejecutar migraciones desde ts, siga la forma recomendada oficialmente que se describe aquí:

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

Además, en ese caso, no olvide actualizar el blob de migraciones para que sea ts:

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

Si desea ejecutar las migraciones desde archivos js, deberá proporcionar la ubicación desde la carpeta dist después de que los archivos ts se hayan compilado en el formulario js.

over 4 years ago · Santiago Trujillo Report

0

Typeorm solo carga la migración desde archivos con extensión js,

En el archivo ormconfig donde configuraste tu conexión;

 { "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"] : indica que typeorm cargará las migraciones desde el directorio de "migración" dado.

si su carpeta de migración está almacenada en un directorio dist o src,

"migrations": ["migration/*.js"] ahora será "migrations": ["dist/migration/*.js"] o "migrations": ["src/migration/*.js"] , el * significa cualquier nombre de archivo de migración. Solo asegúrese de que el directorio o los directorios colocados aquí ["migration/*.js"] conduzcan a donde están sus archivos de migración

"migrationsDir": "migration" : indica que la CLI debe crear nuevas migraciones en el directorio "migration". así que cualquier directorio que especifique aquí es donde se crearán sus archivos de migración.

Tenga en cuenta que si sus archivos de migración tienen extensiones mecanografiadas (.ts), debe compilar sus archivos de migración en archivos javascript; si no, typeorm no los encontrará.

over 4 years ago · Santiago Trujillo Report

0

Además de la respuesta dada por @Upka Uchechi

Si está utilizando mecanografiado, debe ejecutar los siguientes comandos

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

Para dar un poco más de contexto. Si sus archivos de configuración se ven en <PROJECT ROOT>/db-migrations , el comando de compilación anterior debería mover los archivos JavaScript compilados a <PROJECT ROOT>/dist/db-migrations . Para eso, su archivo de configuración se vería así

 ... "migrations": ["dist/db-migrations/*.js"], ...
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!