❕문제 상황
프론트와 프로필 이미지 업로드 기능 연결을 하던 중, 분명 포스트맨에서는 잘 작동하는데, 프론트 단에서는 500에러가 나면서 업로드가 되지 않는 문제가 발생했다.
어디서 발생한 오류인지 이유를 알 수 없으니 프론트에서 테스트한 조건 그대로 받아서 백엔드 단에서도 테스트를 해보는 것이 개인적으로 생각했을 때, 의사소통 문제를 줄일 수 있는 가장 좋은 방법인 것 같다.
같은 파일을 다운받고 파일 이름도 같게 만들고 포스트맨으로 테스트한 결과,
한글로 구성된 파일 이름이 일정 길이를 넘으면 저장되지 않는 문제였다.
❗️ 에러 문구
org.springframework.dao.DataIntegrityViolationException: Data truncation: Data too long for column 'thumb_nail_url'
💡 가능한 해결 방법
MySQL 데이터베이스에서 thumb_nail_url 컬럼의 길이를 VARCHAR(255)를 VARCHAR(512)로 확장 -> 더 긴 URL을 저장할 수 있음
❗️ 한글 파일명이 VARCHAR(N)제한보다 더 긴 경우도 발생할 수 있을 것이라고 생각하여, 근본적인 해결 방법이 아니라고 생각했다.
또한 데이터베이스 스키마 변경을 요구하며, 너무 긴 문자열을 허용하면 불필요한 데이터 저장 및 관리 문제가 발생할 수 있다.
파일 이름에서 불필요한 부분을 제거하거나, 간결한 형식으로 변환하는 방식.
공백을 '_'로 대체하거나, 파일 이름을 줄이는 알고리즘을 적용할 수 있음
❗️ 원본 파일 이름의 일부 정보를 유지할 수 있지만, 고유성을 보장하기 어려움
✅ 선택한 해결 방법
3. 파일 이름을
UUID+확장자로 저장❓ 이유
- 프로필 이미지 업로드 기능이기 때문에 파일의 원본 이름이 크게 중요하지 않다
- UUID는 고정된 길이(36자)로 구성되므로 데이터베이스의 VARCHAR(N) 제한에 쉽게 맞출 수 있다.
