在使用mysqlbinlog查看日志的时候碰到了一个问题,
错误提示以下:
/usr/local/mysql/bin/mysqlbinlog: unknown variable 'default-character-set=utf8'
产生这个问题的缘由是由于我在my.cnf中的client选项组中添加了
default-character-set=utf8
选项。因我网站全部网页使用的都是utf-8编码。为了方便和统一,故设置这个选项非常有必要。
在网上查找了下相关的资料,了解到这个是mysqlbinlog的一个bug。 既然client选项组里容许经过
default-character-set选项设置客户端编码,为什么自带的工具mysqlbinlog却不认识这个选项?
在这里即便不认识,那也用不着直接出错而退出运行,如果不认识这个选项那只要略过此选项
(能给出个notice提示下不认识此选项则更好)继续运行岂不更好?
尽管如此,要解决这个bug的方法仍是有的,
一种方法是使用:
loose-default-character-set=utf8
loose-选项,loose为宽松的, 散漫的, 自由的意思,在选项前加了loose-,则当程序不认识此选项时会略过此选项,
并给出一个警告
/usr/local/mysql/bin/mysqlbinlog: unknown variable 'loose-default-character-set=utf8'
....(注:后面跟着的是日志内容)
另外一种方法,咱们使用mysqlbinlog查看日志的状况并很少,通常都是临时性的。我发如今使用mysqlbinlog工具查看
二进制日志时会从新读取的mysql的配置文件my.cnf(windows下是my.ini),而不是服务器已经加载进内存的配置文件。
也就是说只要修改并保存了my.cnf文件,而不须要重起mysql服务器,则使用mysqlbinlog查看时修改后的my.cnf配置文件
对mysqlbinlog而言已经生效。因此这里可使用此方法:把client选项组中default-character-set=utf8选项屏蔽掉,如
#default-character-set=utf8
而后运行mysqlbinlog工具,则不会产生任何问题了。固然记得在不在使用mysqlbinlog工具时,把#default-character-set=utf8
选项恢复为default-character-set=utf8
如果在脚本中使用mysqlbinlog工具备此问题,则最好使用两份配置文件,一份是已屏蔽掉上面选项的,一份是没有屏蔽掉的。
在使用mysqlbinlog工具时使用前一份配置,在不使用时使用后一份配置,这样也是为了防止服务器重起致使default-character-set=utf8选项没起做用。sql