[H2] ON DUPLICATE KEY 문법 오류 (42000-214)

dondonee·2024년 6월 1일
0

문제

<insert id="updateProfileImageName">
    INSERT INTO profile_image (user_no, upload_name) VALUES (#{userNo}, #{uploadFile.uploadFileName})
    ON DUPLICATE KEY UPDATE upload_name = #{uploadFile.uploadFileName}
</insert>

ON DUPLICATE KEY UPDATE를 사용한 MyBatis 메서드를 만들고 테스트를 해 보았는데 아래와 같은 SQL 문법 오류가 발생했다.


Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "INSERT INTO profile_image (user_no, upload_name) VALUES (?, ?)\000a        [*]ON DUPLICATE KEY UPDATE upload_name = ?"; SQL statement:
INSERT INTO profile_image (user_no, upload_name) VALUES (?, ?)
        ON DUPLICATE KEY UPDATE upload_name = ? [42000-214]


해결 ✅

문법에는 이상이 없기 때문에 H2 호환 문제라고 생각했다. 스프링 부트는 테스트 시 별도 설정을 하지 않으면 H2 인메모리 모드를 사용한다. 따라서 아래와 같이 테스트 애플리케이션 설정을 해 주었더니 해결되었다.

spring:
  datasource:
    url: jdbc:h2:mem:test;MODE=MySQL;


0개의 댓글