Spring Batch - 시작 2. H2가 아닌 MariaDB로 띄워보기( Batch 스키마 설정)

Kim Dong Kyun·2023년 6월 6일
1
post-custom-banner

순서대로!

1. 마리아디비 도커 띄우기

docker run --name "컨테이너이름" -e MYSQL_ROOT_PASSWORD="설정할 비밀번호" -e MYSQL_DATABASE="DB이름" -e MYSQL_CHARSET=utf8mb4 -e MYSQL_COLLATION=utf8mb4_unicode_ci -p 3306:3306 -d mariadb:latest
  • 위 컨테이너이름, 비밀번호, DB이름 등을 설정한 후 terminal로 run

2. application.yml 수정

spring:
  profiles:
    active: mariadb

---

spring:
  profiles:
    active: local
  datasource:
    hikari:
      jdbc-url: jdbc:h2:mem:db;MODE=MYSQL;
      username: sa
      password:
      driver-class-name: org.h2.Driver
  batch:
    job:
      enabled: true

---

spring:
  profiles:
    active: mariadb
  datasource:
    hikari:
      jdbc-url: jdbc:mariadb://localhost:3306/commerce
      username: sa
      password: 221031
      driver-class-name: org.mariadb.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true
  batch:
    job:
      enabled: true

위와 같이 두개의 프로필 작성!


이미지 출처

Spring Batch 는 위와 같은 메타데이터가 존재한다.

H2 DB는 자동으로 테이블/스키마 생성하지만(Boot가 런할때), 다른 DB들은 설정해줘야 한다고 함.

the following 1 profile is active: mairadb < 설정한 프로필로 시작

설정한 mariaDB 프로필로 그냥 시작하려고 할 시에

Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]

해당 오류가 발생. 있지도않은 녀석들을 찾으니까!

그러므로 스키마를 찾아보자.

3. 스키마 찾기

IntelliJ 기준

쉬프트 두번 클릭 -> files 선택 한 후

보이는것처럼 schema-"본인사용db" 검색


그렇게되면 이렇게 Spring Batch 기본 스키마가 보인다!

이 스키마를 로컬에서 실행해서 띄워줘도 되고, 혹은 application.yml 파일을 수정해도 된다.

spring:
  batch:
    jdbc:
      initialize-schema: always

출처 깃헙, 스프링 배치 메타데이터 테이블 자동 생성 설정

위 두 방법중 하나를 선택해서 실행한 모습

---

스프링 배치 5.0 이상 버전에서 실습이 너무 어렵다. 같은 내용을 실행하는 데 걸리는 시간이 너무 많음. 4로 다시 돌아가야하나 싶다

post-custom-banner

0개의 댓글