MySql 한글 및 이모지 지원하기

eggChopChop·2023년 9월 21일
0

이슈

토이 프로젝트 진행하며, iOS에서 '한글'과 '이모지' 를 입력해도 500 에러가 발생하면서 새로운 Todo 가 만들어지지 않음.

원인을 파악해보니 mysql의 유니코드와 관련이 있었음.

진행

  • 해당 유니코드를 바꾸기 위해 아래의 작업을 진행함.

일단 Terminal을 열고 진행중이던 mysql을 잠시 멈춘다.

sudo /usr/local/mysql/support-files/mysql.server stop
./mysql -u root -p
>>> 현재 나의 MySql
--------------
./mysql  Ver 8.0.33 for macos13 on arm64 (MySQL Community Server - GPL)

...
Server characterset:	utf8mb3
Db     characterset:	utf8mb3
Client characterset:	utf8mb3
Conn.  characterset:	utf8mb3
...

Status를 확인해보면 characterset이 utf8mb3로 들어가있는걸 확인할 수 있다.

아래의 절차를 통해 utf8mb4로 바꿔주도록 하겠다.

Vim을 열어준다.

sudo vi /etc/my.cnf

아래의 script를 작성하고 esc 버튼을 누른다음 :wq 저장하고 종료해준다.

[mysql]
init_connect=SET NAMES utf8mb4
default-character-set=utf8mb4
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
old_passrod=1

[client]
default-character-set=utf8mb4

[mysqldump]
default-character-set=utf8mb4

그리고 위의 mysql status 를 확인하게 되면 utf8mb4로 변경된걸 확인할 수 있다.

  • 그리고 여전히 입력되지 않는 이슈가 있어 더 찾아보았다..

DB를 열어서 title과 description의 유니코드-Collation을 확인해보니
utf8mb4 아니라 latin1_swedish_ci 설정되어 있었음.

SHOW FULL COLUMNS FROM 테이블명;

나의 TODO 예제)
SHOW FULL COLUMNS FROM todos;

설명)
ALTER TABLE 테이블명 MODIFY 열명 VARCHAR(길이) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

나의 TODO 예제)
ALTER TABLE todos MODIFY title VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

결론

DB에 잘 들어가는 것을 확인할 수 있다.

iOS 앱에도 잘 들어오는 것을 확인할 수 있다.

profile
Hi, I'm an App Developer. I will archive the minor details.

0개의 댓글