Situation (상황)
application.yml을 application-dev.yml, application-local.yml과 분리하던 도중 프로젝트를 실행하니, 애플리케이션을 실행시키자 아래와 같은 에러가 터졌습니다
Unknown table 'SEQUENCES' in information_schema
Unable to build Hibernate SessionFactory
처음에는 단순히 테이블이 없어서 생긴 문제라고 생각했는데, 사실 원인은 다른 데 있었습니다.
Task (과제)
문제를 찾아 보니, application.yml에 기존에 사용하던 h2 Dialect가 설정 되어 있었습니다.
spring:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
spring: jpa: database-platform: org.hibernate.dialect.H2Dialect 하지만 실제로 사용 할 DB는 MySQL이었다.
즉 Hibernate가 H2 전용 Dialect로 실행되면서, MySQL에는 없는 SEQUENCE 전략을 적용해버렸습니다.
결과적으로 Hibernate가 information_schema.SEQUENCES를 조회하려다 에러가 발생했다.
따라서 해결 과제는 간단했습니다.
Action (실행)
ID 생성 전략 점검 엔티티에서는 AUTO 대신 IDENTITY 전략을 사용하도록 바꿨습니다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
MySQL/MariaDB는 AUTO_INCREMENT 기반이기 때문에 IDENTITY 전략이 더 안전합니다.
application.yml에 Dialect 추가: Hibernate가 MySQL 방언을 사용하게 명시했습니다.
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
Result (결과)
애플리케이션이 정상적으로 실행되었고, 더 이상 SEQUENCES 테이블을 찾는 에러가 발생하지 않게 되었습니다.
'개발 > 서버' 카테고리의 다른 글
| STAYONE KOREA 프로젝트: 왜 결제 요청시각과 완료시각을 ‘두 쌍으로’ 저장해야 했을까 (0) | 2025.10.14 |
|---|---|
| Can't create table `visit_plans` (errno: 150 "Foreign key constraint is incorrectly formed") - JPA에서 테이블 복사 후 외래키 에러 해결 (1) | 2025.09.23 |
| 프랜차이즈 데이터 관리 구조 개선: 33개 테이블에서 12개의 테이블로 (0) | 2025.08.20 |
| 프차천국 - 데이터 삽입 로직 비동기 처리 (1) | 2025.08.20 |
| 프차천국 - 데이터 삽입 로직 최적화 (0) | 2025.08.20 |
댓글