typeorm / typeorm.github.io

Repository for typeorm documentation website.

Home Page:http://typeorm.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

typeorm cli not running created migrations

danielbom opened this issue · comments

Basic informations:

  • typeorm: ^0.3.6
  • os: Windows 11

How to specify the path of my migrations?

ts-node --require tsconfig-paths/register --require ./tsconfig.build.json ./node_modules/typeorm/cli --dataSource ./src/database/typeorm-data-source.ts migration:generate .\src\database\migrations\initial
# Migration E:\DISK\Github\social-media-app\backend\nodejs-nest\src\database\migrations\initial.ts has been generated successfully.
# Done in 3.97s.

ts-node --require tsconfig-paths/register --require ./tsconfig.build.json ./node_modules/typeorm/cli --dataSource ./src/database/typeorm-data-source.ts migration:run
# query: SELECT VERSION() AS `version`
# query: SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'test' AND `TABLE_NAME` = 'migrations'
# query: SELECT * FROM `test`.`migrations` `migrations` ORDER BY `id` DESC
# No migrations are pending

My DataSource:

import { Comment } from 'src/app/comments/entities/comment.entity';
import { Post } from 'src/app/posts/entities/post.entity';
import { User } from 'src/app/users/entities/user.entity';

import { DataSource } from 'typeorm';
import { SnakeNamingStrategy } from 'typeorm-naming-strategies';

const dataSource = new DataSource({
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'admin',
  password: '...',
  database: 'test',
  entities: [User, Comment, Post],
  migrations: ['src/app/database/migrations/*.ts'],
  namingStrategy: new SnakeNamingStrategy(),
  // synchronize: true,
});

export default dataSource;

My directory schema, simplified (output by tree)

src/
├── app
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   ├── auth/
│   ├── comments/
│   ├── posts/
│   └── users/
├── database
│   ├── database.module.ts
│   ├── migrations
│   │   └── 1650143775406-initial.ts
│   ├── typeorm-data-source.ts
├── main.ts
├── tests
│   └── test-schema.ts
└── types
    └── global.d.ts

I solve!

const dataSource = new DataSource({
  migrations: ['**/app/database/migrations/*.ts'],
});

Or

const dataSource = new DataSource({
  migrations: [path.resolve(__dirname, 'migrations', '*.ts')],
});

I feel more safe with 2nd style.