강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이종현님의 프로필 이미지
이종현

작성한 질문수

스프링부트 데이터베이스 rds 마이그레이션 시 ddl 오류?

작성

·

90

0

안녕하세요.

서버를 AWS로 옮기면서 기존 서버의 데이터베이스 dump 파일을 RDS에 올리는 식으로 마이그레이션 했습니다.
mysql -u root -h {end_point} -p {database_name} < ./{backup}.sql
이렇게 해서 데이터베이스에 정상적으로 가져와지긴 했는데
서버를 구동하면

1.png이런식으로 WARN 로그가 찍힙니다.

물론 동작은 전부 잘 되는데 모든 테이블에서 저렇게 찍히니 나중에라도 뭔가 오류가 생길 것 같기도 해서요.

어떻게 마이그레이션을 다른 방식으로 진행해야할까요? 아니면 해결방법이 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이종현님, 문제의 로그는 테이블이 이미 존재하여 DDL(Data Definition Language) 명령어 실행에 실패했음을 나타냅니다. AWS로 서버를 이전하면서 기존 데이터베이스를 RDS에 마이그레이션한 후 서버 구동 시 발생한 문제로 보입니다.

이 상황에서 해결 방법으로는 application.properties 또는 application.yaml 파일에서 spring.jpa.hibernate.ddl-auto 속성을 적절히 설정하는 것입니다. 예를 들어, 데이터베이스 스키마를 이미 수동으로 관리하고 있다면, spring.jpa.hibernate.ddl-auto=none으로 설정하여 Hibernate가 DDL 실행을 시도하지 않도록 할 수 있습니다.

또 다른 방법으로는, 만약 테이블이 이미 존재하는 상황에서 서버 시작 시 마이그레이션을 자동으로 관리하고 싶다면, Flyway나 Liquibase와 같은 데이터베이스 마이그레이션 도구를 사용하는 것을 고려해 볼 수 있습니다. 이러한 도구들은 버전 관리된 스크립트를 통해 데이터베이스 스키마 변경사항을 적용할 수 있으며, 이미 존재하는 테이블이나 변경사항에 대하여 보다 섬세하게 제어할 수 있습니다.

예를 들면, Spring Boot는 Flyway와 Liquibase를 지원합니다. 자동으로 데이터베이스 마이그레이션을 처리하고자 한다면 아래와 같은 설정을 추가할 수 있습니다.

spring.flyway.locations=classpath:/db/migration,classpath:/dev/db/migration

Flyway를 사용할 경우, dev 프로필이 활성화되어있을 때 dev/db/migration에 있는 마이그레이션 스크립트가 실행됩니다.

더 자세한 정보를 원하신다면 Spring Boot 공식 문서에서 Flyway와 Liquibase에 대한 섹션을 참고하세요.

이종현님의 프로필 이미지
이종현

작성한 질문수

질문하기