본문 바로가기
Database/MARIADB

unknown variable 'default-character-set=utf8'

by 반화넬 2022. 3. 31.
반응형

현상

mysqlbinlog 또는 mysqldump 시에 아래와 같은 에러가 발생할 수 있습니다.

$ mysqlbinlog mysql-bin.000001 mysqlbinlog: unknown variable 'default-character-set=utf8'

원인

MySQL 5.5.3 부터 default-character-set 이라는 옵션이 없어졌기 때문입니다.

mysqlbinlog 프로그램은 기본적으로 my.cnf 를 읽게 되어 있는데 여기에 default-character-set 설정이 있었기 때문에 해당 변수를 이해하지 못하기 때문에 발생합니다.

// 5.5.3 Release 내용 The --default-character-set and --default-collation server options (use --character-set-server and --collation-server).

해결방법

방법(1) --no-defaults 옵션 사용

이것은 기본적으로 읽어들이는 my.cnf 를 무시하여 my.cnf 에 명시된 잘못된 character-set 설정을 읽지 않도록하여 상황을 회피하기 위한 옵션입니다. 하지만 원인을 해결한 것은 아닙니다.

$ mysqlbinlog --no-defaults mysql-bin.000001

방법(2) default-character-set=utf8 제거 character-set-server=utf8 추가

5.5.3 부터는 my.cnf 에 default-character-set 옵션이 불필요하도록 변경되었습니다.

아래와 같이 [mysqld] 부분에 character-set-server 만 설정해주면 됩니다.

[mysqld] character-set-server=utf8

기타

추가로 더 살펴보면 MySQL 5.5.3 부터 utf8mb4 가 추가된 것을 알 수 있고 utf16, utf32 도 추가되었습니다.

그리고 performance_schema 도 추가되었고 show engine innodb status 명령어도 이 때 굳어졌습니다.

이 버전에서 캐릭터셋에 대한 중요한 변화들을 포함하여 많은 변화가 있었던 시점이었던 것 같습니다.

또하나 대단한 것은 2009년 12월에 처음 시작된 Release Note 가 2019년인 현재까지 이어져 있습니다. RC 버전까지 더하면 10년 이상을 새로운 버전(5.6, 5.7)의 주요 변경을 반영하여 호환성 맞추거나 버그를 fix 하여 사용자를 위해 계속 힘써왔다고 보여집니다.


참고자료

반응형