mysqlbinlog: unknown variable ‘default-character-set=utf8’ への対処方法

mysqlbinlog を実行した際に次のようなメッセージが返ってくる場合、原因は恐らく MySQL のオプションファイル my.cnf にあると思われます。

[root ~]# mysqlbinlog mysql-bin.000222 | more
mysqlbinlog: unknown variable 'default-character-set=utf8'

私も悩まされました。
旧バージョンでの先人の経験も参考にして、実際に MySQL 5.5.11 で試した結果と合わせて、次のような結論付けをしています。

原因と対処方法

原因は、my.cnf の[client]グループに default-character-set=utf8 が指定されていることです。

対処方法は、my.cnf の[client]グループから default-character-set=utf8 を削除することです。

その後、MySQLを再起動して、再度 mysqlbinlog を実行してください。今度は正常に実行できるはずです。

※ mycnf はグローバルオプション設定用のオプションファイルとして、/etc/mycnf が既定で存在します。ここで触れている[client]グループの設定は、MySQL にアクセスしようとするすべてのクライアントに対する共通設定を行う効果を持ちます。
しかしながら、クライアントは概ねそれぞれが参照権限のあるところに MySQLへのアクセス情報を持つことが通例でしょう。少なくとも、当サイトで使用しているMySQLサーバに対するクライアントはそうです。したがって、当サイトのMySQL 5.5.11 では [client]グループごと削除してしまいました。

なお、MySQL 5.5.10、5.5.11 の/etc/my.cnf にはデフォルトで[client]グループは存在しません。

Comments are closed.