MySQL Master Slave因字符集不同导致的报错

今天做主从同步里,执行slave start报了以下错误。
引用

Fatal error: The slave I/O thread stops because master and slave have different values for the COLLATION_SERVER global variable. The values must be equal for the Statement-format replication to work

意思是因为主从之间的COLLATION_SERVER这个全局变量不同,slave停止工作了。

查看MySQL手册,这个变量的控制默认的服务器校对规则。
引用

Use collation_name as the default server collation


在MySQL中字符集与校对规则之间的关系如下:
引用

字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。

假设我们有一个字母表使用了四个字母:‘A’、‘B’、‘a’、 ‘b’。我们为每个字母赋予一个数值:‘A’=0,‘B’= 1,‘a’= 2,‘b’= 3。字母‘A’是一个符号,数字0是‘A’的编码,这四个字母和它们的编码组合在一起是一个字符集。

假设我们希望比较两个字符串的值:‘A’和‘B’。比较的最简单的方法是查找编码:‘A’ 为0,‘B’为1。因为0 小于1,我们可以说‘A’小于‘B’。我们做的仅仅是在我们的字符集上应用了一个 校对规则。校对规则是一套规则(在这种情况下仅仅是一套规则):“对编码进行比较。”我们称这种全部可能的规则中的最简单的 校对规则为一个binary(二元)校对规则。


这时候只需要修改Server默认的字符集就可以,MySQL会自动设置相对应的校对规则。
set global character_set_server='latin1';

collation_server     | latin1_swedish_ci 

你可能感兴趣的:(thread,应用服务器,mysql,工作)