1.문제 정의
- 문제 요약 : QueryDsl을 사용한 match(). against()를 등록시 테스트 실행시 오류 발생
- 발생 일시 : 2024년 7월 4일
- 발생 장소 : 로컬 개발 환경
2. 증상 기술
- 상세 증상 : QueryDsl을 사용한 match() against()를 사용하기 위해 커스텀 MySQL 방언을 확장해 등록하고 테스트 코드를 실행하면 오류가 발생하며, Repository 테스트가 모두 실패합니다.
- 첨부 사진 :



3. 원인 분석
- 원인 가설 :
- 테스트 코드에서 사용하는 데이터베이스는 H2 인메모리 데이터베이스이기 때문에, MySQL 방언을 사용할 수 없어 오류가 발생할 가능성
- 테스트용 YAML 파일에 방언을 명시하지 않아 발생할 가능성
- 검증 과정 :
- 테스트 코드에서 H2 인메모리 데이터베이스 대신 MySQL을 사용하도록 설정을 변경하고 테스트를 실행했습니다.
- 테스트용 YAML 파일에 MySQL 방언을 명시하고 테스트를 다시 실행했습니다.
- 최종 원인 : 테스트 환경에서 H2 인메모리 데이터베이스를 사용하면서 MySQL 전용 방언을 적용하려고 하여 발생한 문제임을 확인했습니다.
4. 해결 방법
- 조치 내용 :
- MySQL 방언을 확장하여 사용하는 방법대신 MetadataBuilderContributor을 구현하여 적용
- 결과 확인 : MySQL의 방언을 건드리지않고 메다데이터를 수정하여 등록하여 테스트 코드가 정상적으로 실행되는것을 확인