danc
danc*dev
danc
  • 분류 전체보기
    • codestates_BE_bootcamp39
      • 주단위 일기
      • 회고
    • programming
      • JAVA
      • SPRING
      • GENERAL
      • LINUX
      • ALGORITHM
      • ERROR_HANDLING
    • web
      • NETWORK
      • DB
      • HTML
      • CSS
    • kr
    • nz

최근 글

인기 글

태그

  • TIL
  • 일기
  • TIL 일기
  • 윈도우 11 우분투
  • 회고
  • AOP
  • css
  • TIL일기
  • 코드스테이츠
  • 코드스테이츠 백엔드
  • HTTP
  • React에서 Authorization헤더

최근 댓글

티스토리

hELLO · Designed By 정상우.
danc

danc*dev

[pre-project] RDS연동 후 프로그램 실행 시 프리징
programming/ERROR_HANDLING

[pre-project] RDS연동 후 프로그램 실행 시 프리징

2022. 9. 6. 00:01

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
    'programming/ERROR_HANDLING' 카테고리의 다른 글
    • [pre-project] React에서 Bearer 토큰을 헤더로 받아오기
    • [pre-project] React 에서 Spring Boot 서버로 접속 불가 - CORS
    danc
    danc
    Backend 개발자를 목표로 공부 중 입니다.

    티스토리툴바