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

今天做主从同步里,执行slave start报了以下错误。
[quote]
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
[/quote]
意思是因为主从之间的COLLATION_SERVER这个全局变量不同,slave停止工作了。

查看MySQL手册,这个变量的控制默认的服务器校对规则。
[quote]
Use collation_name as the default server collation
[/quote]

在MySQL中字符集与校对规则之间的关系如下:
[quote]
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。让我们使用一个假想字符集的例子来区别清楚。

假设我们有一个字母表使用了四个字母:‘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(二元)校对规则。
[/quote]

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

set global character_set_server='latin1';


collation_server | latin1_swedish_ci
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值