정말 오랜만에 포스팅을 하는거 같은데요, 최근에 SNS에서 크롤링을 하여 SQL에 넣는 작업을 하다가 이모티콘때문에, 에러가 난적이 있어서 관련해서 이모티콘이 들어갈 수 있도록 설정하는 법을 포스팅하려고 합니다.


에러 내용

크롤링을 돌리다가 보니 다음과 같은 에러가 발생하였습니다.

1366, "Incorrect string value:

원인

원인은 이모티콘을 지원하게 하려면 utf8mb4로 설정해야 하는데, euc-kr이나 utf-8로 설정이 되어 있어서 그렇습니다.


해결방법 - 쿼리로 설정하기

심플하게 utf8mb4로 설정을 하면 됩니다

우선 아래 내용을 쿼리로 보냅니다.

# Database 설정 바꾸기
ALTER DATABASE <database_name> 
CHARACTER SET = utf8mb4 
COLLATE = utf8mb4_unicode_ci;


# Table 설정 바꾸기
ALTER TABLE <table_name> CONVERT TO 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;


# 개별 Column 설정 바꾸기
# 모든 varchar 컬럼은 일관성 유지를 위해서  바꿔야 합니다.
ALTER TABLE <table_name>
  CHANGE <varchar_col1> <varchar_col1> VARCHAR(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  CHANGE <varchar_col2> <varchar_col2> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

해결방법 - Cloud SQL의 characterset 변경하기

먼저 구글 클라우드 콘솔 에 들어가서 메뉴 - SQL을 누릅니다.

바꾸고자 하는 인스턴스를 클릭하여 들어갑니다.

상단의 수정 버튼을 누릅니다.

그럼 여러가지 설정 메뉴가 나오는데 스크롤을 내려서 구성 옵션 - 데이터베이스 플래그 추가를 누릅니다.

그럼 아래와 같이 나오는데 + 항목 추가를 누릅니다.

아래 그림과 같이 character_set_serverutf8mb4로 변경하고 하단의 저장을 누릅니다.

그 다음 다시 시작 버튼을 눌러서 인스턴스를 다시 시작하면 적용이 됩니다.

그럼 아래와 같이 이모티콘들이 잘 들어가는걸 확인할 수 있습니다.