Springboot + Kotlin + JPA + MySQL 연동 시 주의할 점

에러 출현

스크린샷 2020-06-17 오전 12 13 12

갑자기 개인 노트북에서 잘 되던 프로젝트가 회사 맥북에서 안돌아가는 이슈가 있었다.

에러 내용은 대략 다음과 같다.

Error creating bean with name 'entityManagerFactory' defined in class path resource

즉 entityManagerFactory라는 이름의 빈이 없어서 발생한 이슈였다.

오늘은 이 이슈가 왜 발생했고 어떻게 수정할 수 있는지 알아보자.

원인

원인은 총 두가지이다.

  1. OpenJDK 11에서 javassist를 포함 안함.

  2. application.properties의 spring.jpa.database-platform에서 org.hibernate.dialect.MySQLXDialect를 수정해주어야함. X에는 버전

첫 번째 원인

OpenJDK가 자바 11에서 javassist를 포함 안해서 그래들에 의존성을 추가해주어야한다.

코틀린 DSL의 경우 아래와 같이 추가해주면 된다.

스크린샷 2020-06-17 오전 12 19 08

  • build.gradle.kts

두 번째 원인

application.properties에서 MYSQL을 설정할 때 버전을 명시해주게 되어있다.

나는 기존 내 개인 맥북의 MYSQL 버전이 5버전이었는데, 회사 맥북에서는 최근에 설치해서 그런지 8버전이 깔려져있었다.

자신의 MYSQL 버전을 확인하는 방법은 MYSQL에 접속 후 다음 명령어를 치면 알 수 있다.

SHOW VARIABLES LIKE "%version%";

스크린샷 2020-06-17 오전 12 20 59

그럼 위와 같이 version이 나오는데 저 version이 MYSQL의 버전이다.

나같은 경우에는 8버전이기 때문에 8버전으로 수정해주었다.

스크린샷 2020-06-17 오전 12 19 49

그래도 안된다면?

application.properties에 명시한 Database의 이름이 현재 MYSQL에 존재하는지 확인해보자. (아마 이 에러가 최상단에 뜰 것임)

Reference

갓갓 스택 오버 플로우 : https://stackoverflow.com/questions/52167881/springboot-mysql-database-unable-to-open-jdbc-connection-for-ddl-execution

고수 개발자님 : https://ktko.tistory.com/entry/Spring-boot-JPA-Open-JDK-%EC%82%AC%EC%9A%A9%EC%8B%9C-Error-creating-bean-with-name-entityManagerFactory-%ED%95%B4%EA%B2%B0



© 2022. by minkuk

Powered by minkuk