DB

데이터베이스 이모지 관련 에러 해결 - Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '=' 에러가 aws RDS에서 발생했을 때 해결

발전생 2021. 8. 20. 21:20

mysql 공식문서에 따르면 collation 디폴트 값은 utf8mb4_0900_ai_ci입니다.

 

 The default MySQL server character set and collation are utf8mb4 and utf8mb4_0900_ai_ci



필자는 아래와 같은 과정으로 aws RDS에 mysql DB을 올려놨습니다.

mysql 워크벤치를 통해 ERD을 만들고 forward를 통해 로컬 db와 동기화를 시켜줬습니다.

그 다음 sequelize-cli의 seed 명령어를 통해 데이터를 생성해줬습니다.

서버 내부에서는 sequelize-auto를 사용해서 만들어진 데이터베이스 구조를 사용했습니다. 이 구조에 charset, collate 옵션을 utf8mb4, utf8mb4_general_ci로 줬었습니다.

이후 mysql 워크벤치의 export를 통해 데이터베이스 구조와 내용을 내보내고

aws RDS를 워크벤치로 연결한 뒤 import 해줬습니다.

 

처음에 이모지를 허용해주기 위해 sequelize의 utf8mb4_general_ci로 설정했던 게 문제였지 않나 싶습니다. '

나중에 general_ci가 구식임을 알게 된 뒤 unicode_ci로 변경했었습니다.

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '='

이런 에러를 만났고 해결이 필요했습니다.

 

 

많은 stack overflow를 뒤진 뒤 대략 3가지 명령문들을 발견했습니다.

  • connection
  • database
  • table

들에서 변경이 필요하다 여겨 다 해봤습니다.

 

 

워크벤치에서 aws rds DB에 연결한 뒤 query에 직접 쿼리문을 작성했습니다.

SET collation_connection = 'utf8mb4_unicode_ci';
ALTER DATABASE tuto CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE category CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE comment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE lecture CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE portfolio CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE portfolioImage CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE recomment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tutorial CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

 

그 뒤 user의 닉네임에 이모지를 넣어 회원가입 시켜봤더니 이제 에러가 안 뜨게 됐습니다.

데이터베이스에도 잘 저장된 걸 확인할 수 있습니다.

'DB' 카테고리의 다른 글

mariaDB sql문 초보가 저지르는 실수 (foreign key)  (1) 2021.10.25
MongoDB를 써보다. 장점과 단점  (0) 2021.08.11