아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
카카오뱅크 favicon카카오뱅크

Exposed, MySQL, Escape 문자 처리 문제, 디버깅으로 해결!

by DD
2025-02-21
1년 전
조회수 15

Exposed와 MySQL 환경에서 Escape 문자 처리 오류 발생

디버깅을 통해 Exposed의 Upsert DSL에서 Escape 미처리 원인 파악

SELECT & (INSERT or UPDATE) 방식으로 우회, Exposed 이슈 제보 및 해결

Exposed Upsert DSL의 Escape 미처리 원리

Exposed의 Upsert DSL에서 INSERT 부분은 값을, UPDATE 부분은 Expression 타입을 사용한다. MySQL Connector는 값은 Escape 처리하지만, Expression은 순수 문자열로 전달한다. 따라서, UPDATE 시 Escape 처리 누락으로 인해 문제가 발생했다.

Escape 처리 회피 전략: SELECT & (INSERT or UPDATE)

문제 해결을 위해 SELECT 쿼리를 먼저 실행하여 데이터 존재 여부를 확인한다. 데이터가 없으면 INSERT, 있으면 UPDATE를 수행하는 방식으로 변경했다. QPS 증가 및 발생 가능성을 고려하여 DBA와 협의 후 적용했다.

동시성 문제

근본적인 해결책: Exposed 이슈 제보 및 개선 요청

가장 근본적인 해결책은 Exposed 측에 Escape 처리 기능 개선을 요청하는 것이다. Upsert DSL에서 Expression 타입 대신 값을 사용할 수 있도록 수정 요청했다. 오픈소스 기여를 통해 문제 해결에 기여하고, 데이터 무결성을 확보할 수 있다.

Exposed에서 도망 간 Escape를 찾습니다 (feat. MySQL)
중급
아키텍처
Exposed
MySQL
Java
SQL
Backend
Data
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

AI 에이전트와 함께 레거시 시스템 성능 개선, SQL Injection, N+1 문제 해결!

데보션 로고

SQL 기초부터 실전까지 마스터!

더 프라임아젠 로고

신입 개발자들의 좌충우돌 프로젝트 회고: React, Java, MySQL 기반 리뷰 서비스 개발 경험 공유!

올리브영 로고

PostgreSQL, MySQL보다 압도적인 성능? 벤치마크 결과 공개!

레딧 로고

무신사, 10초 타임아웃을 20ms로 줄인 비결 공개!

무신사 로고

소프트웨어 혁신의 역사, 어떤 기술이 세상을 바꿨을까?

랍스타즈 로고
카카오뱅크 favicon카카오뱅크
중급
아키텍처
Exposed
MySQL
Java
SQL
Backend
Data

관련 추천 글

AI 에이전트와 함께 레거시 시스템 성능 개선, SQL Injection, N+1 문제 해결!

데보션 로고

SQL 기초부터 실전까지 마스터!

더 프라임아젠 로고

신입 개발자들의 좌충우돌 프로젝트 회고: React, Java, MySQL 기반 리뷰 서비스 개발 경험 공유!

올리브영 로고