해결된 질문
작성
·
320
답변 1
0
안녕하세요! yskim님!
해당 문제는 먼저, graphql과 rest 방식의 차이와는 큰 관련이 없는 것으로 보여집니다!
해당 에러 메시지를 살펴보니, product_category2가 이미 존재한다는 것 같아요!
synchronize의 여부가 문제인 것 같은데! synchronize가 true인 경우, 작성된 entity를 데이터베이스 테이블에 적용하려는 시도가 자동으로 이루어집니다! 말 그대로 동기화하다 이지요?!
이 과정에서, 이미 존재하는 테이블을 다시 만들려고 시도하면서 실패한 것 같아요!
그러면, synchronize를 false로 하였을 때는 왜 괜찮았는가?!
그 이유는, synchronize를 false로 두면, 사용자가 직접 작성한 테이블 변경 쿼리를 전송하지 않으면 아무 일도 일어나지 않기 때문에 그렇답니다!
그러면 언제 해당 옵션을 사용하는가?, 실 배포시에 synchronize를 false로 합니다. 왜냐면 entity 구조를 자동으로 테이블에 동기화 시키도록 시스템에 맡길 시, 컬럼이 통째로 삭제된다던가 하는 위험한 상황이 발생할 수 있기 때문이에요!
따라서, 해결 방법으로는 아래 2가지가 있습니다.
연습이신 경우, 해당 테이블을 dbeaver에서 제거하고 다시 만드셔도 괜찮습니다.
실 배포를 하시는 경우, synchronize를 false로 하시고, 테이블을 변경하는 쿼리를 추가로 작성하여 전송해야합니다