하이버네이트 자동 키 에러 해결
이슈
java.sql.SQLException: Table 'dbschema.hibernate_sequence' doesn't exist
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1694) ~[mariadb-java-client-2.7.3.jar:na]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1556) ~[mariadb-java-client-2.7.3.jar:na]
해결
- 개발용 스키마에 sql 로 직접 쿼리 날려서 테이블 생성하여 사용 중이었는데 전체 테이블을 다 밀었다. 그 과정에서 hibernate_sequence 가 날아가면서 생긴 일
- 하이버네이트는 'hibernate_sequence'라는 키 생성 전용 테이블을 생성하여 엔티티의 키를 생성해준다.
- 따라서
@GeneratedValue(strategy = GenerationType.AUTO)
를 쓰면 DB명.hibernate_sequence 가 필요하다 - spring.jpa.hibernate.ddl-auto 옵션을 none 으로 두고 개발 중이었는데 다시 create 로 변경하여 새롭게 테이블을 싹 만들어서 다시 시작했다
참고
- https://ppost.tistory.com/entry/hibernate-%EC%8A%A4%ED%94%84%EB%A7%81HibernateMySql-%EC%97%B0%EB%8F%99-%EC%82%BD%EC%A7%88-%EB%A6%AC%EC%8A%A4%ED%8A%B8featjava-config
- https://www.popit.kr/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%90%EB%8F%99-%ED%82%A4-%EC%83%9D%EC%84%B1-%EC%A0%84%EB%9E%B5%EC%9D%84-%EA%B2%B0%EC%A0%95%ED%95%98/
반응형