java.sql.SQLSyntaxErrorException: Table '테이블명' doesn't exist

김가누·2023년 1월 10일
0

Error 해결사항들

목록 보기
3/3

애플리케이션 실행 시 테이블이 없다는 에러메시지가 자꾸 나온다.

그러나 확인을 해보면 DB도 자동 생성되고 테이블도 다 존재하는 것을 볼 수 있었다.

검색을 해보니 dialect 버전이 잘맞는지 확인해보라해 보니

잘맞았고

lower_case_table_names=0 인지 확인해 0이면 1로 변경해보라해 확인해보니

....

계속 보다보니 yml 파일의 문제 같은데 좀 더 찾아보니 ddl-auto 문제였다.

원래 ddl-auto 부분이 create-drop, create 였는데 update로 바꾸니 오류는 해결되었다.

ddl-auto 옵션 종류

  • create : 기존 테이블 삭제 후 다시 생성(drop + create)
  • create-drop : create와 같으나 종료시점에 테이블 DROP
  • update: 변경분만 반영(운영 DB에서 사용 x)
  • validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
  • none: 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.)

주의할 점

  • 운영 장비에서는 절대 crate, create-drop, update 사용하면 안된다.( 데이터 날아가면 진짜 아찔하다.)
  • 개발 초기 단계는 create 또는 update
  • 테스트 서버는 update 또는 validate
  • 스테이징과 운영 서버는 validate 또는 none

하지만 로컬 환경을 제외한 나머지 서버에서는 최대한 직접 쿼리를 날려서 적용하는 것이 가장 좋다고한다.

마무리 하며

아직은 JPA 관련해서 이해를 잘못했던 것 같다.
좀 더 공부를 해야할 것 같다....

참조

https://smpark1020.tistory.com/140
https://deep-dive-dev.tistory.com/31

profile
정리와 기록하는 습관들이기

0개의 댓글