Mysql 기본 설치 시 Server가 가지고 있던 기본 Collation은 latin1_swedish_ci 였다.
드디어 8.0에서는 utf8mb4_0900_ai_ci로 변경이 되었다.
MySQL Version 5.7
show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
MySQL Version 8.0
show variables like '%collation%';
+-------------------------------+--------------------+
| Variable_name | Value |
+-------------------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
| default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |
+-------------------------------+--------------------+
위와 같은 차이점을 발견할 수 있는데 각 변수는 다음을 뜻한다.
collation_connection :
연결된 세션 내에서 발생된 문자열의 정렬, 컬럼의 값과 비교할 시 우선 순위 가 밀림
collation_database :
현재 use된 database의 문자 정렬
collation_server :
mysql 서버 인스턴스가 가진 기본 정렬,
database 생성 시 지정하지 않으면 해당 collation으로 자동 설정됨
default_collation_for_utf8mb4 :
이 버전간 복제 시 사용되는 utf8mb4의 정렬 형태로
8.0 이전 버전에서는 utf8mb4_0900_ai_ci 가 지원되지 않기에 발생되는 문제들로 인한 변수값
설정 가능 값 [utf8mb4_0900_ai_ci, utf8mb4_general_ci]
mysql 8.0에서 사용되는 utf8mb4_0900_ai_ci을 설명하자면 다음과 같다.
uft8mb4 : 각 character가 최대 4byte UTF8 인코딩을 지원(이모지 처리 가능)
0900 : Unicode 의 collation algorithm 9.0.0 을 지원
ai : accent insensitivity. 그래서 다음 문자들은같은 문자로 취급함(e, è, é, ê and ë)
ci: case insensitivity. 그래서 p 와 P 를 같은 순서로 취급
따라서 해당 Mysql 을 업그레이드를 진행할 시 이슈가 발생되는데 ai 옵션에 따라 다음과 같은 문자에 unique 옵션이 있다면 ‘23000 Duplicate entry’ 를 발생 시키게 된다.
insert into test(n, u) values('n', 'e');
insert into test(n, u) values('n', 'è');
따라서 필요에 따라 Collation을 utf8mb4_general_ci로 변경하여 마이그레이션을 진행해야 한다.
'Database > Mysql & Mariadb' 카테고리의 다른 글
Mysql 8과 Mariadb 10의 Backup 이슈(2) [mariabackup] (0) | 2021.10.13 |
---|---|
Mysql 8과 Mariadb 10의 Backup 이슈(1) [xtrabackup] (0) | 2021.10.12 |
MySQL 8 계정 이슈 (0) | 2021.10.06 |
Mysql JDBC Connector TimeZone 에러 (0) | 2021.10.05 |
Visual code on Mysql (Mariadb) (0) | 2021.07.02 |
최근댓글