Backend/DB 실무
[H2] H2 SQL파일 로드
Mr.6_냥아치
2024. 2. 26. 14:05
반응형
SQL문으로 데이터를 미리 넣어놓으려고 했다.
하지만 Build시 에러 발생
1. JPA쿼리문 관련하여 이슈가 발생했다고 생각
기본 쿼리문인 findAll()을 사용
하지만 증상 동일
2. 생성 경로 및 초기화에 이슈라고 생각
찾아보니 초기화와 shema선언 없이 data만 넣으려고 하면 에러가 발생할 수 있다고 하여
properties를 수정하고 shema 생성 sql도 추가하였다.
하지만 증상 동일
3. 생성쿼리 자체에 문제가 있나 라는 생각
INSERT INTO board (board_seq, title, content, board_ctgr, board_status) VALUES (1, 'test1', 'test_text1', 'noti', 'Active');
단순 insert문이기도 하고, 콘솔에서 입력하는 문장 그대로 사용했다.
하지만 그래도 증상은 동일했다.
5. 마지막으로 지난번 프로젝트때 진행한 대로 설정
이유는 알아내지 못했지만 지난번 프로젝트때 진행했을때 스키마 선언 없이 그냥 data만 입력하여 진행했었다.
그래서 이번에도? 하면서 확인해 본 결과 성공했다.....
하지만 생각해보니 1번으로 다시 돌아간 상태인것 같은데.... 도대체 뭐가 다른건지 알아내지 못했다.
단지 짐작하는 것으로는
spring.jpa.defer-datasource-initialization=true
이 코드를 추가한 것이다.(아마도...)
하지만 이 문제를 해결하면서 확인해야 할 점들을 알아내긴 했다.
CKECK LIST
- SQL 파일 실행 순서: spring.sql.init.schema-locations와 spring.sql.init.data-locations를 사용하여 스키마와 데이터를 초기화하는 경우, Spring Boot는 설정된 순서대로 이 파일들을 실행, 즉 schema-locations를 사용한 후 data-locations를 사용해야함
- 트랜잭션 관리: 트랜잭션의 처리 과정 혹은 순서 확인
- 데이터베이스 연결 정보: application.properties에 정의된 데이터베이스 연결 정보가 정확한지, DB에 연결 가능한지 확인
- 에러 메시지의 상세 내용: Debug레벨에서 로그 확인
logging.level.root=DEBUG
logging.level.org.springframework.jdbc=DEBUG
logging.level.org.hibernate.SQL=DEBUG
반응형