earthkingman / 42Swim

42서울 QnA 서비스
14 stars 3 forks source link

db, swagger 업데이트시 최신화 방법 #99

Open hainho opened 2 years ago

hainho commented 2 years ago

제목

db, swagger 업데이트시 최신화 방법

이슈에 대한 설명

db 초기화(최신화) 방법

스크린샷 2021-10-22 오후 8 30 29
  1. db/data, db/initdb.d 폴더 삭제 (기존의 스키마, 데이터 모두 삭제)
  2. npm run dbreset (스키마 다시 생성)
  3. backend/ormconfig.ts 에서 synchronize: true로 수정 (테이블, 컬럼 동기화 옵션 사용)
  4. npm start (테이블 컬럼 동기화)
  5. 정상적으로 실행되면 서버 종료 이후 backend/ormconfig.ts 에서 synchronize: false로 수정 (동기화 되었으니 옵션 끔)

swagger 최신화 방법

  1. npm run api-docs (build의 yaml 파일 최신화)

checkList

주의사항

Yenowme commented 2 years ago

npm run dbreset 정상적으로 실행되면 터미널 종료하고 npm run db 해줘야함

nyeoni commented 2 years ago

Error response from daemon: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use

이 에러가 뜰 경우 mysql 이 프로세스 :3306에 돌아가고 있을 확률이 높으므로

  1. mysql 터미널 종료
  2. activity monitor 에서 mysql 종료 or kill 3306
nyeoni commented 2 years ago

/Users/chloek/project/CodingDictionary/backend/src/driver/mysql/MysqlQueryRunner.ts:1453 const defaultCollation = dbCollation["COLLATION"]; ^ TypeError: Cannot read properties of undefined (reading 'COLLATION') at MysqlQueryRunner.<anonymous> (/Users/chloek/project/CodingDictionary/backend/src/driver/mysql/MysqlQueryRunner.ts:1453:49) at step (/Users/chloek/project/CodingDictionary/backend/node_modules/tslib/tslib.js:143:27) at Object.next (/Users/chloek/project/CodingDictionary/backend/node_modules/tslib/tslib.js:124:57) at /Users/chloek/project/CodingDictionary/backend/node_modules/tslib/tslib.js:117:75 at new Promise (<anonymous>) at Object.__awaiter (/Users/chloek/project/CodingDictionary/backend/node_modules/tslib/tslib.js:113:16) at /Users/chloek/project/CodingDictionary/backend/src/driver/mysql/MysqlQueryRunner.ts:1449:54 at Array.map (<anonymous>) at MysqlQueryRunner.<anonymous> (/Users/chloek/project/CodingDictionary/backend/src/driver/mysql/MysqlQueryRunner.ts:1449:37) at step (/Users/chloek/project/CodingDictionary/backend/node_modules/tslib/tslib.js:143:27)

위와 같은 에러가 나는 경우 ormconfig.ts 파일의 synchronizefalse 로 해주면 해결됨

hainho commented 2 years ago

db 초기화 이후 seed data 추가하려면

  1. npm start 이전에
스크린샷 2021-11-03 오후 11 04 22

backend/src/index.ts 의 44줄 주석 부분 주석 해제하고 4. npm start 이후 다시 주석 처리

hainho commented 2 years ago
  1. npm run dbreset
  2. backend/ormconfig.ts 에서 synchronize: true로 수정
  3. backend/src/index.ts 44번째 줄 시드 데이터 추가 부분 주석해제
  4. npm start
  5. '시드 데이터 삽입 완료' 로그 확인 후 서버 종료
  6. backend/ormconfig.ts 에서 synchronize: false로 수정
  7. backend/src/index.ts 44번째 줄 시드 데이터 추가 부분 주석처리