-
[리눅스] Spring Boot 3.0 build 시 java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java 에러Backend/리눅스 2023. 5. 31. 15:37728x90
문제
GCP 우분투 인스턴스에 MySQL을 실행하고 MySQL과 연결한 SpringBoot 3.0을 서버에서 ./gradlew build를 시켰을 때 다음과 같은 에러가 발생했다.
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java
에러가 시작된 곳은 hibernate 예외였다.
org.hibernate.hibernateexception at dialectfactoryimpl.javadelegate.java
해결
해당 에러는 Spring Boot에 설정한 DB에 연결할 수 없을 때 발생한다. 보통 이유는 두가지 이다.
- DB를 실행시키지 않음
- datasource 정보를 잘못적음
DB를 실행시키지 않았다면 실행시키면 되고, datasource 정보의 경우 올바르게 적으면 된다.
# application.yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Seoul username: pop password: pop jpa: properties: hibernate: show_sql: true format_sql: true hibernate: ddl-auto: update
나는 이 두가지를 다 했었는데 작동이 되지 않았는데, 이유는 DB 사용자 였다.내가 생성하고, 접근도 허용한 사용자가 실제로 없었던 사용자 였던것이다!
mysql에 접속하여 다음 명령어로 사용자를 생성하고 db에 대한 권한을 부여한 후 저장했다.
use mysql; create user 'pop'@'localhost' identified with mysql_native_password by 'test123'; GRANT ALL PRIVILEGES ON testdb.* TO 'pop'@'localhost'; FLUSH PRIVILEGES;
그리고 user 목록을 조회했다.
- 에러 해결 후 캡처해서 잘 작성되어있지만, 당시에는 1행의 user가 존재하지 않았다.
- pop이라는 user가 존재하지 않는데 Spring Boot에서는 pop으로 접속하라고 하니 안됐었다.
- pop user를 다시 생성한 결과 위와 같이 생성되었고 잘 연결됐다.
- workbench 연결을 위해 %로 host를 설정했다.
사용자만 잘 생성해주면 해결 완료~!
728x90'Backend > 리눅스' 카테고리의 다른 글