Develop/Java

[JPA] Table 'DB.hibernate_sequence' doesn't exist 에러

연로그 2022. 1. 14. 22:39
반응형

java.sql.SQLSyntaxErrorException: (conn=602) Table 'DB이름.hibernate_sequence' doesn't exist 에러

 

Entity의 PK를 @GeneratedValue(strategy = GenerationType.AUTO)로 해두었을 때 발생한 문제이다.

hibernate_sequence라는 테이블에서 PK를 조회하는데 해당 테이블이 존재하지 않아서 발생한다.

 

이 때 선택할 수 있는 방법이 두 가지 있다.

  1. DDL 자동생성 설정 하기
  2. GenerationType 변경하기

 

1의 경우에는 실제 운영 환경에서 쓰기에는 매우 위험하다.

DDL을 자동으로 생성한다는 것은 애플리케이션 실행 이후로 DB의 테이블 구조가 막 바뀔 수 있다는 의미이다.

개발 환경이라면 편의성을 위해 종종 사용하는 것 같다.

JPA의 설정만 바꿔주면 된다.

 

1

Spring Boot 이용 시 application.properties 변경

spring.jpa.hibernate.ddl-auto=create

 

persistence.xml 변경할 경우 아래 설정 추가

<property name="hibernate.hbm2ddl.auto" value="create"/>

 

create 외 다른 옵션에 관해서는 다음 링크에서 '2. DB 스키마 자동 생성'을 참고하길 바란다.

https://yeonyeon.tistory.com/179

 

[JPA] Entity 매핑

이전 글: https://yeonyeon.tistory.com/178 예제 코드: https://github.com/yeon-06/inflearnSpring/tree/master/jpa-ex1 목차 1. @Entity란? 2. DB 스키마 자동 생성 3. 필드와 컬럼 매핑 4. 기본 키 매핑 5...

yeonyeon.tistory.com

 

2

@GeneratedValue(strategy = GenerationType.IDENTITY)

GenerationType을 IDENTITY로 바꿈으로써 PK 값 할당을 DB에게 맡긴다.

헌데 난 이 방법으로도 에러가 났다..😂 (아래 접은 글 참고)

🔻 java.sql.SQLException: Field 'id' doesn't have a default value 에러

더보기

테이블 생성 시 PK에 AUTO_INCREMENT 설정을 해줘야 사용 가능하다!!

반응형