728x90
반응형

mysql에 데이터를 insert하는 과정에서 발생된 에러다.

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x99 "...' for column 'DSC' at row 1

 

원인은 '😙'와 같은 이모지를 기존에 사용하던 DB에 insert하려 했다는 문제다.

웹에서 검색한 대부분은 답변은 character set을 변경하라는 내용이다.

 

MySQL utf8에서 utf8mb4로 마이그레이션 하기

Emoji같은 글자들은 utf8 인코딩 되는경우 글자당 최대 4bytes까지 필요하다. 하지만 기존 MySQL의 utf8 필드의 경우 글자당 최대 3bytes 까지만 지원하는 한계점이 있었다. 때문에 MySql database에서 utf8mb4

www.letmecompile.com

 

물론 변경하는 것이 가장 베스트의 선택이다. 

그러나 나는 이미 운영중인 서버이기 때문에 함부로 선택할 수 없는 문제였고,

이런 이모지가 꼭 필요한 요소인가를 봤을때 아니라고 생각했다.

그래서 이모지를 제거 또는 변환하는 방법을 사용하기로 했다.

 

 

[Java] Emoji 문자 제거

현재 웹에서 제공하는 이모지 [ win + . ] 또는 모바일 단말기에서 제공하는 특수문자들이 유니코드이지만 DB에 저장 시 지원하지 않는 경우 에러를 유발하게 됩니다. 😊 정확하게는 uft8mb4를 지원

string.tistory.com

 

이렇게 문제가 해결되는 줄 알았다. (분명 로컬에서는 잘 돌았거든..)

그런데 tomcat 서버에서 실행될 때 문제가 발생 했다.

좀 큰 덩어리의 스케줄로 돌아가는 부분이기 때문에 자세한 검토는 하지 못했지만

짐작하기로는 해당 라이브러리가 내 운영서버 환경에서는 적용되지 않는 것이 아닌가 짐작하고 있다. 

아쉽지만 운영서버에서 발생되는 문제의 원인은 아직 확인하지 못했다.

다만, 항상 발생되는 문제가 아니고, 중요한 요소가 아닌지라 이것으로 인해 에러가 발생되면 패스하도록

예외처리를 통해 피하고 있는 중이다.

728x90
반응형

+ Recent posts