개발/Spring

🌱Spring:: Unknown table 'SEQUENCES' in information_schema 에러 해결(spring.jpa.hibernate.ddl-auto=update 할 때)

hyuunii 2024. 6. 20. 12:21

로컬 디비가 다 날아가서...

ddl-auto 옵션을 사용해야 할 상황이 왔다....

(여담인데, 디비 버전 업그레이드는 왜이렇게 매번 힘든것인가?;;;;; 아나

어제도 로컬 Mysql 버전 올리다가 에러나서 한시간 넘게 삽질하다가 결국 다 날리고 새로 깔았다.... 그랬더니 됨

ㅎr 이제 어지간하면 디비 버전은 건드리지 않을 것 같다.......🥵)

 

신중, 또 신중해야 하는 작업이므로;; 

라고는 하지만 일단 로컬/라이브 서버 application 설정 파일도 분리되어있고ㅋ

 

암튼 별 걱정 없이 none에서 update로 바꾸고 돌렸다.

근데 에러를 뱉으면서 잘 안굴러가길래, '왜이래?' 하고 걍ㅋ create로 바꿔서 돌렸는데 이번엔 에러는 없고 걍... 먹통.

 

 

 

글서 update로 다시 바꾸고 에러를 확인했다.

일단 이정도인데.... WARN에서부터 'hibernate dialect에 뭔가 문제가 있군' 하는 감이 왔고,

 

아래 ERROR에서

2024-06-20T12:17:47.924+09:00 ERROR 19798 --- [  restartedMain] o.h.engine.jdbc.spi.SqlExceptionHelper   : Unknown table 'SEQUENCES' in information_schema
2024-06-20T12:17:47.926+09:00 ERROR 19798 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.SQLGrammarException: Unable to build DatabaseInformation [Unknown table 'SEQUENCES' in information_schema] [n/a]

 

[ Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.SQLGrammarException ] 이 부분을 보는데 dialect 문제가 맞을거란 확신이 들었음.

 

 

 

 

기존에는 database 설정이

spring.jpa.database=sql-server
spring.jpa.hibernate.ddl-auto=update

이거 두 개만 있었음. (ddl-auto는 배포중인 서버에서는 그냥 none으로 해줍시다!!!! 이건 지금 DB 다 날아가서 이렇게 해둔거고 전 테스트DB도 none으로 해두고 그때그때 쿼리 날려서 해요!!!)

 

 

 

글서 내 mysql 버전에 맞게 dialect 설정도 명시를 해줘야겠다 싶어서

spring.jpa.database=sql-server
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update

중간에 

spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

이 부분을 추가해줌.

 

 

 

 

그랬더니 에러도 없고 테이블 생성도 전부 잘 된다...!!!!

근데 로그 조금 더 살펴봤더니

 

 

이제는 이렇게 WARN 로그가 바뀌어 나와서

 

 

 

 

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

이렇게 다시 바꾸고 돌렸는데

 

 

 

 

여전히 dialect 적어줄 필요가 없단다.

 

....?????????? 그거 안적으니까 에러 뱉었잖아

 

 

 

어이없지만 혹시 몰라서 다시 dialect 설정을 지우고 돌렸더니

ㅋ 역시나 그냥 이전과 똑같은 에러나면서 꺼짐ㅋ 환멸ㅋ

 

 

 

 

근데 어차피.... 이제 다시 none으로 바꿀거라 dialect 옵션이 필요 없는ㅋㅋ 상황이긴 함

 

암튼!!! 에러 해결 완료~