타입스크립트 사용 시 TypeORM 공식 문서에 따른 명령어는 에러가 발생하여 사용하지 못한다.
Migrations | typeorm
Once you get into production you'll need to synchronize model changes into the database. Typically, it is unsafe to use synchronize: true for schema synchronization on production once you get data in your database. Here is where migrations come to help. A
orkhan.gitbook.io
공식문서 상 명령어
npx typeorm-ts-node-esm migration:generate ./src/migrations/update-post-table -d ./src/data-source.ts
수정한 명령어
npm install --save-dev ts-node
npm install --save-dev typescript @types/node
npx ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:generate src/migrations/migration -d src/data-source.ts
이때 migration:generate 뒤에 오는 파라미터는 경로라고 나오는데 이상한게 마지막 경로는 이름에 넣어짐.
ex) src/migrations/migration
--> 마이그레이션된 파일이 src/migrations/ 하위에 생기고 '숫자-migration'이런 식으로 이름 뒤에 하이픈 migration이렇게 들어감. 즉 마지막 경로는 파일명 뒤에 하이픈과 추가되는 것임.
반영
npx ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js migration:run -d ./src/data-source.ts
데이터소스 예시
// src/data-source.ts
import { DataSource } from 'typeorm';
import * as dotenv from 'dotenv';
import 'reflect-metadata';
dotenv.config({ path: `.env.${process.env.NODE_ENV}` });
export default new DataSource({
type: 'mysql',
host: process.env.MYSQL_HOST,
port: Number(process.env.MYSQL_PORT),
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
entities: ['src/**/*.entity.ts'],
migrations: ['src/migrations/*.ts'],
logging: true,
});
'데이터베이스, ORM > TypeORM' 카테고리의 다른 글
[TypeORM] connection pool size 조정해서 데이터베이스 작업 효율 높이기 (0) | 2025.04.20 |
---|---|
[TypeORM] 골치 아픈 Distinct 쿼리 피해 소요 시간 줄이기 (0) | 2025.03.22 |
[TypeORM] 내가 트랜잭션을 사용하는 이유와 조심해야할 부분 (0) | 2024.12.17 |
[TypeORM] SQL 쿼리 튜닝 - 2. 외래키 정보 join없이 조회하기 (0) | 2024.12.02 |
[TypeORM] SQL 쿼리 튜닝 - 1. findBy VS findOneBy 뭐가 더 좋을까? (0) | 2024.11.25 |