긱뉴스봇 을 굴리면서 중복 여부를 검출할 때 mysql 을 활용하고 있었습니다. 최상위 페이지에 노출되는 id, url 원본 링크, 제목과 설명까지만 담아두는 간단한 데이터베이스였는데 이번에 본문 중에 이모지가 들어간 글이 게재되면서 mysql 데이터베이스가 쿼리를 받지 못하는 일이 발생했습니다.

긱뉴스봇이 동작하지 않으면서 가장 먼저 데이터베이스를 찍어보고 id 2575 번 글이 등록이 되지 않은 것을 확인했습니다. 글을 찾아보니 본문에 이모지가 들어있는 걸 보고 문제의 원인임을 파악했습니다. 대처법을 찾아보니 mysql 5.3 이후로는 utf8mb4로 인코딩을 변경하면 된다는 글이 대부분이었습니다.

ALTER DATABASE [database_name] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

다만 링크대로 작업한 것만으로는 이모지를 추가하지 못했고 추가적으로 검색한 결과 StackOverflow 글에서 언급한 바와 같이 테이블의 인코딩도 변경을 하고나서 정상적으로 입력할 수 있었습니다.

ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;