运行mysqlbinlog提示unknown variable 'default-character-set=utf8mb4'如何解决
报错根因
mysqlbinlog属于MariaDB客户端工具集,运行时会自动读取全局配置中[client]段的所有参数,但该工具本身不支持default-character-set配置项,因此当/etc/mysql/mariadb.conf.d/50-client.cnf的[client]段配置了该参数时,就会抛出未知变量的报错。
解决方案
以下三个方案可按需选择:
- 方案1:单次执行时跳过所有默认配置加载
执行命令时在最开头添加--no-defaults参数即可,示例如下:
mysqlbinlog --no-defaults --start-datetime="2021-12-05 13:13:00" /var/log/mysql/[你的二进制日志文件名]
注意:--no-defaults必须放在所有参数的最左侧,否则不会生效
- 方案2:修改配置文件永久解决
调整客户端配置的作用范围,仅让需要字符集配置的客户端工具读取该参数:
- 编辑
/etc/mysql/mariadb.conf.d/50-client.cnf文件 - 删除
[client]段下的default-character-set = utf8mb4行 - 新增
[mysql]、[mysqldump]两个配置段,将字符集配置移到这两个段下,修改后参考配置:
[client] # 原有[client]段的其他配置保留即可 [mysql] default-character-set = utf8mb4 [mysqldump] default-character-set = utf8mb4
修改后无需重启任何服务,所有客户端工具(包括mysqlbinlog)都可以正常运行,同时不会影响普通客户端的默认字符集配置。
- 方案3:单次执行时忽略不支持的参数
如果不想跳过所有默认配置,可添加带loose前缀的字符集参数,mysqlbinlog遇到不识别的带loose前缀的参数会自动忽略,示例如下:
mysqlbinlog --loose-default-character-set=utf8mb4 --start-datetime="2021-12-05 13:13:00" /var/log/mysql/[你的二进制日志文件名]
内容的提问来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

