在使用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