본문 바로가기
공부 내용 정리

DB 연동 오류 문제 || Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

by onggury 2023. 8. 27.

문제

  • 프로젝트와 mysql 연동하는 과정에서 아래와 같은 오류를 만났다.
  • Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 라는 오류가 떴다.
        ※ *dialect : 하이버네이트가 데이터베이스와 통신을 하기 위해 사용하는 언어
  • 마지막 오류 내용 → Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

원인

  • 해당 오류 내용은 mysql SQL을 처리해줄 수 있는 dialect의 값이 제대로 설정되지 않아서 나타나는 오류라고 한다.
  • 아무래도 application.yaml 에서 DB 설정을 뭔가 잘못 적었을것이라 판단했다.

결과

  • 이런저런 글을 찾아보니 JPA에 값을 지정해주면 해결된다고 하여 database: mysql 을 추가했다.
  • 그런데 이번엔 ‘Access denied for user 'kang'@'localhost’’ 라는 오류가 발생했다.
  • 계정에 접근하는데 문제가 발생했으니 혹여나 datasource 값에 주소와 접근 아이디, 비밀번호, jdbc 드라이버를 잘못 썼을까봐 유심히 관찰하다가 url 주소에 포트번호가 눈에 들어왔다.
  • 생각해보니까 지난번에 오라클을 쓴다고 3306 포트를 사용했었다.
    3306 포트는 오라클이 사용중이니 mysql의 포트번호는 3307로 했었다.
    (언젠가 포트번호 때문에 문제 생길 것 같으니 절때 잊지 말아야지 생각은 했지만, 정말 생각만 했었던 것이였다)
  • 다시 초기 설정 그대로 다 돌려놓은 후 url 포트번호를 3307로 바꾸니까 연동이 해결되었다.

 

사실 이전에도 해당 오류를 한 번 겪은적이 있었다. 그러나 그땐 이것저것 하다가 어쩌다보니 해결하는바람에 정리 할 생각도 못했는데, 이번기회에 다시한번 정리하게 되었다.

즉, 해당 오류는 DB 설정에서 어딘가 틀림없이 잘못 되었기 때문이니, 프로젝트 여기저기 들쑤시며 찾아다닐 필요없다.(왜냐하면 내가 처음에 그랬다)