django admin에서 모델 객체를 하나 추가하려고 했는데 Illegal mix of collations 라고 나옵니다

한글 값이 있을 때만 추가가 안되는걸 보니 이유가 짐작이 됩니다. RDS 콜레이션 설정을 하지 않았네요

엔진이 MySQL인지 MariaDB인지 기억이 안나 확인해봤더니 MariaDB 입니다

RDS - Parameter Groups로 가서 파라미터 그룹을 만듭니다. 이름은 적당히 지어줍니다.

Parameter Group Family는 rds가 사용중인 버전을 선택합니다

(Default parameter는 변경이 안되니 새로 만드는겁니다)

character 관련 파라미터들을 전부 utf8mb4로 세팅합니다. (utf8로 해도 상관 없지만, 이모지 사용이 불가능합니다)

  • character_set_client
  • character_set_connection
  • character_set_database
  • character_set_filesystem
  • character_set_results
  • character_set_server

collation 관련 파라미터도 변경합니다. utf8mb4_generai_ci로 변경합니다.

  • collation_server
  • collation_connection

생성해둔 파라미터 그룹을 RDS에 연결해줄 차례입니다.

RDS 인스턴스에서 수정(Modify)를 클릭한 뒤, DB parameter group을 아까 만든 파라미터 그룹으로 교체해줍니다.

적용시점을 물어보는데, 즉시 적용하도록 'Apply immediately' 체크를 해줍니다

 

이제 완료! 라고 하고싶지만.. 

This variable is dynamic, but should not be set manually, only by the server.

collation_database, character_set_database는 파라미터에 의해 변경되지 않고 서버에 붙어서 직접 수정해야 한다고 합니다.

ALTER DATABASE DB이름
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci'

위 sql 활용해서 잘 바꿔줍니다

반응형