프로젝트 회원가입 기능 구현을 마치고 build 테스트를 진행하였습니다.
하지만, develop 브랜치에 PR 을 올리니 local에서는 잘 build 가 잘만 되었었는데 PR 시 build 오류가 났습니다!!
맨 처음에는 mapperTest() ,serviceTest() 에서 오류가 난 것만 보고 local이랑 왜 다르지,, 하며 멘토님께 질문을 드렸습니다. caused by 가 중요한 데 그 부분을 안보고 질문을 드렸죠,,^^
멘토님께서 로그를 보는 습관을 들이라고 말씀해주셨고 그때서야 caused by 부분을 보게 되었습니다..(반성😥)
현재 진행중인 프로젝트는 임시 DB로 in-memory 디비인 h2 디비를 사용하고 있습니다. 즉, 제 local 컴퓨터에는 존재하는 테이블이 다른 컴퓨터에서는 존재하지 않을수도 있다는 것이죠.
그래서 schema.sql을 만들어 기존에 table이 존재한다면 drop 및 create를 하여 다시 생성하도록 만들었는데 무슨일인지 저 schema.sql 및 data.sql을 둘 다 타지 않는 것이었습니다.
프로젝트의 application.yml 파일은 다음과 같습니다.
#Spring
spring:
h2:
console:
enabled: 'true'
path: /h2-console
datasource:
username: sa
url: jdbc:h2:~/test;AUTO_SERVER=true;
driverClassName: org.h2.Driver
password: ''
# JPA setting
jpa:
database-platform: org.hibernate.dialect.H2Dialect
#mybatis
mybatis:
mapper-locations: classpath:mybatis/mapper/*Mapper.xml
위 설정에서 데이터베이스를 초기화 해주는 설정이 빠져있던 거였습니다.. ㅎㅎㅎ
- spring.sql.init.mode
- always : SQL 데이터 베이스 초기화 유형에 관계없이 데이터 베이스 초기화
- never : 초기화 비활성화
위의 설정을 추가해주었습니다.
#Spring
spring:
h2:
console:
enabled: 'true'
path: /h2-console
datasource:
username: sa
url: jdbc:h2:~/test;AUTO_SERVER=true;
driverClassName: org.h2.Driver
password: ''
# JPA setting
jpa:
database-platform: org.hibernate.dialect.H2Dialect
# 이부분 추가
# spring.sql.init.mode : 유형에 관계없이 항상 SQL 데이터베이스를 초기화
sql:
init:
mode: always
#mybatis
mybatis:
mapper-locations: classpath:mybatis/mapper/*Mapper.xml
정상적으로 build가 되었습니다.
더보기
JPA를 사용하여 데이터베이스 초기화 하는 설정
- spring.jpa.hibernate.ddl-auto에는 다음과 같은 설정을 할 수 있습니다.
- update : 기존의 스키마를 유지하며 JPA에 의해 변경된 부분만 추가
- validate : 엔티티와 테이블이 정상적으로 매핑되어있는지만 검증
- create : 기존에 존재하는 스키마를 삭제하고 새로 생성한다.
- create-drop : 스키마를 생성하고 애플리케이션이 종료될 때 삭제
- none : 초기화 동작을 하지 않음
- spring.jpa.generate-ddl : spring.jpa.hibernate.ddl-auto 기능을 키고 끄는 옵션 기본설정은 false 이므로 true로 설정해주어야 spring.jpa.hibernate.ddl-auto가 동작합니다.
'Spring' 카테고리의 다른 글
[Spring] 스프링 시큐리티 알아보기 (0) | 2021.12.17 |
---|---|
[Spring] JUnit5 사용하기 (0) | 2021.12.05 |
[Spring] @WebMvcTest 단위 테스트시 Bean 주입 에러 해결 (0) | 2021.11.21 |
[Spring] RESTful API (0) | 2021.11.16 |
[Spring] PSA - 일관성 있는 서비스 추상화 (0) | 2021.10.04 |
댓글