문제 상황
main/resources/data.sql 에 insert 쿼리를 작성하였는데, api를 테스트해보니 data.sql에 있는 쿼리가 적용되지 않았습니다.
data.sql
INSERT INTO users (name, id, password, ...) VALUES (...);
INSERT INTO users (name, id, password, ...) VALUES (...);
-- 이하 생략 --
application.properties
spring.jpa.defer-datasource-initialization=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스
spring.datasource.username=root
spring.datasource.password=데이터베이스비밀번호
spring.jpa.hibernate.ddl-auto=create
해결 방법
application.properties에 아래 코드를 추가하니 data.sql이 정상 작동 하였습니다.
spring.sql.init.mode=always
properties파일이 아닌 yml 파일인 경우 다음 코드를 추가해주세요.
spring:
jpa:
defer-datasource-initialization: true
✨ 어떻게 해결된 것일까?
spring.sql.init.mode=always
위 코드는 Spring Boot 애플리케이션이 실행될 떄 항상 데이터에비스 초기화 스크립트를 실행하도록 지시하는 설정입니다. 이 설정의 속성을 always로 하여 애플리케이션을 시작할 때마다 data.sql의 내용으로 데이터베이스를 초기화합니다.
개발 환경이나 테스트 시에 데이터베이스를 초기화하는 데 유용할 수 있습니다만 프로덕션 환경에서는 초기화 스크립트를 막 실행하지 않도록 주의해야합니다. 😁
'Framework > SpringBoot' 카테고리의 다른 글
[SpringBoot] 데이터베이스 스키마 자동 생성 옵션에 대해 알아보자 / spring.jpa.hibernate.ddl-auto (0) | 2023.12.26 |
---|---|
[SpringBoot] created_at 처럼 엔티티 생성할 때 현재 날짜를 디폴트 값으로 지정하기 + 수정일 / Spring Data JPA automatic date creation (0) | 2023.12.24 |
[Spring] Rest Template란? (0) | 2023.09.09 |
[Spring] Spring에서 깃허브 OAuth 로그인하기 (0) | 2023.09.01 |
[SpringBoot] @OneToMany, @ManyToOne, @ManyToMany 연관 관계 매핑, @JoinTable (0) | 2023.08.30 |