728x90
300x250
\xF0\x9F\x98\x81
\xF0\x9F\x98\x82
\xF0\x9F\x98\xA4
이게 뭔데 에러가 나는가 ?
흔히들 우리 휴대폰에서 자주 쓰는 "이모지 😁 😤" 가 유니코드화 된것. 4byte 로 구성되있음
UTF-8 문자 집합은 1~4 바이트까지 저장이 가능하게 설계가 되어있지만, MySql/MariaDB 에서의 UTF-8 은 3바이트 자료형으로 설계가 되었기 때문에, 최근에 나온 4바이트 문자열을 저장하려고 하면 에러가 발생하게됨
그래서 해결방법은 ?
Mysql 버전 5.5.3 이후에서부터 데이터베이스 chartset을 utf8 을 utf8mb4 로 변경해주면 문제를 해결할수 있음.
** Linux - mariadb 설정파일의 경우 대부분 /etc/my.cnf 에 위치, cnf 같은 파일 작업할땐 기존에꺼 cp 백업 필수.
/etc/my.cnf
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server = utf8mb4
#utf8 들어간 잡다구리는 싸그리 mb4 를 붙여줬다
#안해줬다가 괜히 mysql 재시작하는데 PID 어쩌고 에러 떠서 삽질했다.
init_connect = SET collation_connection = utf8mb4_general_ci
init_connect = SET NAMES utf8mb4
[mysqldump]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
...생략
짜투리 팁
이모지라고해서 모든 이모지가 안되는건 아니고, 3byte 짜리 이모지는 가능함
예를들어 ,
😁 의 경우는 \xF0\x9F\x98\x81 로 총 4byte 를 차지하지만,
☺ \xE2\x98\xBA , ☔ \xE2\x98\x94 같은 애들은 3byte 라서 정상적으로 인식한다.
아래는 mysql 에 정상적으로 insert 된 heidi sql 의 화면
다른 이모지 표가 보고싶다면 아래 링크 참고.
728x90
300x250
'IT > SQL' 카테고리의 다른 글
[mariadb] 이벤트 스케줄러 관련 상태확인, created문 메모 (0) | 2022.01.01 |
---|---|
[Mysql Charset] utf8 에서 utf8mb4 로 변경시 (0) | 2021.10.01 |
[mariaDB] root 비밀번호 분실시 변경 방법 (0) | 2021.06.08 |
[Sqlite] PHP + Sqlite DB파일 생성 CREATE, ALTER, SELECT 등등 (0) | 2021.04.14 |
[My-sql] Data too long for column (0) | 2020.12.10 |