문제 > Oracle을 MySQL로 마이그레이션 하는 과정 중 아래와 같은 오류가 발생했다.
Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory;
환경
Spring Boot 3.2.0 (JPA)
Mysql 8.0.33
IntelliJ (커뮤니티)
Window
1. 기본키 생성 전략 GenerationType
JPA를 사용하더라도 db별로 약간의 차이가 존재한다. 특히 Entity에서 Id값을 생성해 주는 기본키생성전략이 그것이다.
Oracle에선 SEQUENCE, MySQL에서는 IDENTITY 전략을 주로 사용하여 애노테이션을 다음과 같이 수정하였다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 오라클
// @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Game_Id")
// @SequenceGenerator(name = "Game_Id", allocationSize = 1)
하지만 어전히 아래와 같이 오류가 발생했다.
java.sql.SQLException: Access denied for user 'test1'@'localhost' (using password: YES)
계정 접속이 안된다는 의미 같다.
2. 서버 실행 및 접속 확인
간혹 서버를 실행시키지 않아 오류가 생길 때가 있어 확인을 해보았지만 실행 중이었고, workbench에서의 접속 또한 원활했기에 비밀번호도 문제없다.
3. IP 확인
이전 글과 같이 유저를 생성하여 집에서는 접속이 됬는데 외부에서 오류가 발생했기 때문에 IP 문제라고 생각되어 검색해 본 결과 외부 접속을 허용해 주는 방법이 있었다.
create user '유저명'@'%' indentified by '패스워드';
host에 기존 'localhost' 대신 '%'를 붙이면 모든 IP에서 접속을 허용한다.
하지만 여전히 오류는 사라지지 않았다.
4. 방화벽 포트
다음 블로그 포스트를 참고하여 방화벽의 인바운드 규칙에 MySQL 포트를 추가해주었지만 여전히 되지 않았다.
또 다른 블로그에서 포트가 겹치는 문제가 있다 하여 taskkill을 해보았지만 서버만 날아가서 재시작했다.
5. 비밀번호
workbench에서 server - users and privileges를 통해 유저를 확인해 보니 내가 생성했던 비밀번호보다 길었다.
최하단부의 설명대로 조건에 부합하지 않는 비밀번호를 설정하면 caching_sha2_password 인증 방식에 의해 자동으로 비밀번호가 바뀌는 것이었다. 4글자였던 비밀번호를 바꾸니 바로 해결되었다....
등잔 밑이 너무 너무 어둡다....!
'Backend > DataBase' 카테고리의 다른 글
[MariaDB] 인덱스를 못 타는 문제 (0) | 2024.11.25 |
---|---|
[SQLD] 2024년 52회차 시험 후기 - 비전공자 (0) | 2024.03.11 |
[MySQL] 새로운 계정 생성 및 권한 부여 (2) | 2024.01.09 |