ddl 옵션 create로 해놨는데 실행 때마다 alter table answer에서 멈추는 것 같았다.
answer 엔티티 클래스에서 외래 키들의 입력이 들어오지 않아 나는 에러 같아서
@NoArgsConstructor를 붙여주니 그 뒤로는 잘 되었다.
근데 @Entity가 있으면 자동으로 noargs생성자가 된다는데.. 뭐지
---수정
위에 것도 문제긴 했었지만 그게 먹통 현상의 근본적인 문제가 아니었다.
상단에 첨부한 사진에는 Deadlock 관련 이슈가 있었는데 이것은 pool 사이즈를 늘려보래서 늘려봤지만
같은 문제가 발생했다. DB Navigator로 확인한 모습인데 저 에러는 아래에서 설명할 에러때문에 일어나는
일 같다.
결론부터 말하면 가장 큰 이유는 바로 엔티티 안의 외래 키 때문이었는데 중심이 되는 Entity에서
Foreign Key Constraint(제약조건)라는 게 삭제가 되지 않아 테이블이 DROP 되지 않은 것이었다.
그래서 콘솔을 보면 Hibernate: alter table answer 여기까지만 찍히고 프리징 현상이 있었던 것.
JPA에 대한 지식이 없이 막 만들다가 일어난 무지의 결정체였다
question 엔티티를 보면 CONSTRAINT에 FK 어쩌고 FOREIGN KEY 이런 식으로 나오는데 저것이 제약 조건 같았다.
저거 때문에 테이블 DROP이 안 되는 것 같으니 저걸 지우면 CREATE 할 때 다시 생기겠지? 하는 방법으로
접근해서 아래와 같이 하나하나 테이블에 들어가 제약조건이 붙은 외래 키를 수동으로 전부 삭제하였다.
다만 parent테이블 어쩌구 하는 로그를 보아 연관관계에 있으면 삭제를 할 수 없나 하는 생각이 들었다.
전부 삭제를 한 뒤에 다시 스프링을 실행했더니 이번에는 ddl-auto: create가 제대로 작동되었다.
다만 이 방식으로는 같은 문제가 또 생길 것 같아서 이번에는 update 옵션을 넣고 바로 다시 배포를 했다.
RDS와 연동되어있었기 때문에 update 옵션 적용 후 배포를 해도 직전에 create를 통한 테이블 생성이
되어있어서 그 이후로는 같은 문제는 발생하지 않았음.
확실히 JPA 너무 어렵다.. 다른 자료를 참고해가면서 Entity를 만든 것인데 아직도 모르는 게 너무 많다.
정말로 나중에 JPA는 꼭 충분히 배우고 넘어가야할듯
그래도 이것저것 해볼 수 있어서 사이드 지식 같은 것들을 좀 배울 수 있었다.
'programming > ERROR_HANDLING' 카테고리의 다른 글
[pre-project] React에서 Bearer 토큰을 헤더로 받아오기 (0) | 2022.09.06 |
---|---|
[pre-project] React 에서 Spring Boot 서버로 접속 불가 - CORS (0) | 2022.08.28 |