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

뽕리뽕뽕님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

08-04 Nest.js - MySQL 연결

QueryFailedError: Table 'user' already exists

해결된 질문

작성

·

670

0

 안녕하세요 선생님 다름이 아니라

synchronize: true, // 동기화 시켜준다 같게 한다.

true을 하게되면 동기화를 시켜주는건데 매번 yarn start:dev을할때마다

QueryFailedError: Table '***' already exists

이러한 오류가 나옵니다. 그럼 실행 할때마다 데이터베이스 테이블을 매번 지워야 하는건가요??

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 뽕리뽕뽕님!

아래와같이 synchronize: true 를 주시게 되면, vscode에 작성하신 @Entity() 들과 데이터베이스의 테이블을 동기화 시키게 됩니다!

synchronize: true

하지만, 기존에 이미 있는 테이블과 컬럼에 대해서는 놔두고, 변경된 사항에 대해서만 추가/삭제 등이 발생하게 돼요!
따라서 위에서 보여주신 상황은 일반적인 상황은 아니며, 버전에 따른 문제로 보여집니다.
실제 몇 달 전에도 동일한 이슈가 typeorm에서 버전 문제로 인하여 발생했는데, 수업에서 사용된 버전을 공유드릴테니 아래 버전으로 다시 설치해서 진행해 보세요!

"@nestjs/typeorm": "9.0.1",
"mysql2": "3.2.0",
"typeorm": "0.3.12"

버전 교체시, node_modules와 yarn.lock 파일을 삭제하시고 다시 node_modules를 설치하시어 진행해 보세요!^^

뽕리뽕뽕님의 프로필 이미지
뽕리뽕뽕
질문자

선생님... 바꿔도 동일한 문제가 발생하네요 어떤게 문제일까요...?

노원두님의 프로필 이미지
노원두
지식공유자

네! 뽕리뽕뽕님!

해당 버전에서는 동기화이슈가 없믄 것으로 확인되었어요!

따라서, 해당 버전 설치가 잘못 되었거나, 코드상의 오류로 봐야할 것 같아요!

현재 제가 확인 가능한 코드가 없으므로 가능한 시나리오만 말씀을 드려 볼게요!

1.모든 테이블에 대해서 already exists가 나오고 있는지 확인해 보세요!

  1. 그게 아니라면 already exists라고 나오는 테이블의 entity이름으로 작성된 소스코드가 2개이고 각 소스코드에 @Entity() 데코레이터가 붙어있지 않은지

    등을 확인해 보셔야 할 것 같아요!