토이 프로젝트 진행하며, 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 앱에도 잘 들어오는 것을 확인할 수 있다.