인프런 커뮤니티 질문&답변

jeongho218님의 프로필 이미지
jeongho218

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

typeorm seeding, migration

package.json / "scripts" / schema:drop, schma:sync에 `-d ./dataSource.ts` 옵션을 넣지 않으신 이유가 있으신가요?

해결된 질문

작성

·

289

0

테이블 삭제도 시도해보고 싶어서 터미널에

$ npm run schema:drop 을 입력하였더니 아래와 같은 내용이 나왔습니다.

Drops all tables in the database on your default dataSource. To drop table of a
concrete connection's database use -c option.

옵션:
  -h, --help        도움말 표시                                         [불리언]
  -d, --dataSource  Path to the file where your DataSource instance is defined.
                                                                          [필수]
  -v, --version     버전 표시                                           [불리언]

필수 인수가 주어지지 않았습니다: dataSource

 

dataSource가 주어지지 않았다고 해서 살펴보다

package.json/scripts/schema에 다른 명령어들과는 다르게 경로가 지정되어 있지 않는것 같아

아래와 같이 수정했고,

{
"scripts": {
    "seed": "ts-node ./node_modules/typeorm-extension/bin/cli.cjs seed:run -d ./dataSource.ts",
    "schema:drop": "ts-node ./node_modules/typeorm/cli.js schema:drop -d ./dataSource.ts",
    "schema:sync": "ts-node ./node_modules/typeorm/cli.js schema:sync",
}
}

 

테이블 삭제에 성공했습니다.

$ npm run schema:drop 

> a-nest@0.0.1 schema:drop
> ts-node ./node_modules/typeorm/cli.js schema:drop -d ./dataSource.ts

query: SELECT VERSION() AS `version`
query: SELECT * FROM `INFORMATION_SCHEMA`.`SCHEMATA` WHERE `SCHEMA_NAME` = '00_nestjs_typeorm'
query: START TRANSACTION
query: SELECT concat('DROP VIEW IF EXISTS `', table_schema, '`.`', table_name, '`') AS `query` FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = '00_nestjs_typeorm'
query: SELECT concat('DROP TABLE IF EXISTS `', table_schema, '`.`', table_name, '`') AS `query` FROM ` `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA` = '00_nestjs_typeorm'                             INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA` = '00_nestjs_typeorm'
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`channelchats`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`channelmembers`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`channels`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`dms`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`mentions`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`migrations`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`users`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`workspacemembers`
query: DROP TABLE IF EXISTS `00_nestjs_typeorm`.`workspaces`
query: SET FOREIGN_KEY_CHECKS = 1;
query: COMMIT
Database schema has been successfully dropped.

 

혹시 schema:drop, schema:sync 명령어에 경로를 지정하지 않으신 이유가 있으신지,

경로를 빼놓은 상태로 유지하다가, 정말 필요할 때에만 경로 지정하고 명령어를 사용하는게 좋은지가 궁금합니다.

 

실수로 입력해서 데이터 손실이 발생하는 것을 막기 위해서일까요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

typeorm 0.3부터는 datasource 위치를 명시적으로 입력해야 합니다. 제가 빠뜨린 것 같네요

jeongho218님의 프로필 이미지
jeongho218
질문자

네 답변 감사합니다!

jeongho218님의 프로필 이미지
jeongho218

작성한 질문수

질문하기