typeorm config에서 다음과 같이 synchronize가 true로 설정되어 있다면

import { TypeOrmModuleOptions } from '@nestjs/typeorm';

export const typeORMConfig: TypeOrmModuleOptions = {
  type: 'postgres',
  host: 'localhost',
  port: 5432,
  username: 'postgres',
  password: 'postgres',
  database: 'board-app',
  entities: [__dirname + '/../**/*.entity.{js,ts}'],
  synchronize: true,
};

 

 

entitiy class 정의와  db 테이블 스키마가 일치하지 않은 상태에서 프로그램을 실행시킬 경우에 typeorm이 그 차이점을 인식하고 entitiy class 정의를 기준으로 db 테이블 스키마를 변경하는 방식으로 동기화하게 된다.

 

즉 entitiy 정의에 반영된 컬럼의 추가,삭제,수정이 DB 스키마에 그대로 반영되는 위험성이 있다는 것이다.

 

이러한 문제를 방지하기 위해 synchronize 사용하지 않고 마이그레이션 파일을 만들어 실행시키는 방식으로 DB 스키마에 변경사항을 변영한다. DB 스키마를 체계적으로 관리하고 실제 운영환경에서의 안정성을 위해 수동으로 마이그레이션하는 방식을 사용한다.

'개발 > Nest.js' 카테고리의 다른 글

[Nest.js] TypeORM 사용시 EntityMetadataNotFoundError 해결  (0) 2024.07.13

+ Recent posts