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
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 = ?]
해당 오류가 발생. 있지도않은 녀석들을 찾으니까!
그러므로 스키마를 찾아보자.
IntelliJ 기준
쉬프트 두번 클릭 -> files 선택 한 후
보이는것처럼 schema-"본인사용db" 검색
그렇게되면 이렇게 Spring Batch 기본 스키마가 보인다!
이 스키마를 로컬에서 실행해서 띄워줘도 되고, 혹은 application.yml 파일을 수정해도 된다.
spring:
batch:
jdbc:
initialize-schema: always
출처 깃헙, 스프링 배치 메타데이터 테이블 자동 생성 설정
위 두 방법중 하나를 선택해서 실행한 모습
---
스프링 배치 5.0 이상 버전에서 실습이 너무 어렵다. 같은 내용을 실행하는 데 걸리는 시간이 너무 많음. 4로 다시 돌아가야하나 싶다