Spring Boot 에서 data.sql 삽입 과정중 생긴 문제 해결 방법

Sei Kim·2024년 9월 26일

Dayner Coffee

목록 보기
1/1

개요


Dayner Coffee 프로젝트를 진행하면서 개발 환경에서 필요한 데이터를 sql파일로 삽입하기 위해서 진행하다가 발생한 문제를 해결하기 위한 회고입니다.

문제 상황 발생


Dayner Coffee 프로젝트의 개발 환경에서 로컬 데이터베이스를 초기화하기 위한 SQL 파일을 삽입하는 과정에서 예상치 못한 문제가 발생했습니다. 백엔드 리더님께 전달받은 SQL Dump 데이터를 src/resources/db/data.sql 위치에 저장한 후, 해당 데이터를 이용해 로컬 데이터베이스에 데이터를 초기화하려 했습니다. 그러나 애플리케이션을 실행하는 과정에서 서버가 정상적으로 구동되지 않는 문제가 발생했습니다.

로그를 확인해보니, 특정 데이터를 삽입하는 도중 오류가 발생하며 데이터베이스 초기화가 중단되었습니다. 문제의 원인을 추적한 결과, 데이터 파일에 입력된 값 중 \'논알콜\'이라는 문자열이 문제가 되었음을 발견했습니다.

직접 SQL 쿼리를 실행하여 데이터를 삽입했을 때는 문제가 발생하지 않았기 때문에 처음에는 오류의 원인을 쉽게 파악하지 못했습니다. SQL 환경과 스프링 프레임워크를 통해 데이터를 삽입하는 환경의 차이에서 비롯되었습니다. SQL 자체로 실행할 때는 백슬래시(\)를 사용하는 이스케이프 문자가 문제가 되지 않지만, 스프링 프레임워크에서 SQL 파일을 자동으로 읽고 실행할 때는 이스케이프 문자 처리가 다르게 작동하여 데이터 삽입 오류가 발생했던 것입니다.

원인 분석


SQL에서 백슬래시를 이용한 이스케이프는 일반적인 방법이지만, 스프링 프레임워크에서는 이러한 이스케이프 문자를 처리하지 못하여 발생했던 문제입니다. 올바른 문자열 처리를 위해서는 단순한 백슬래시가 아니라, 데이터베이스에서 일반적으로 사용하는 작은따옴표(')만을 사용해야합니다.

이 경험을 통해 SQL환경과 스프링에서 SQL 처리가 어떻게 다를 수 있는지 파악하였습니다.

문제 해결


문제를 해결하기 위해 오류가 발생한 데이터 구문을 \'논알콜\'에서 ''논알콜''로 수정했습니다. 이 수정으로 Spring JDBC가 SQL 파일을 처리할 때 문자열을 올바르게 해석할 수 있도록 하였습니다. 수정 후 애플리케이션을 다시 실행했을 때, 데이터베이스가 정상적으로 초기화되고 서버가 정상적으로 동작하였습니다.

0개의 댓글