MySQL 5.5.12 row格式复制下从库结构变更引发1677错误一则
以前statement复制下做表结构变更时,一般是一台一台的从库依次去做,最后做主库。
今天在一台从库上进行表结构变更时却遇到一个复制报错,
Last_Errno: 1677
Last_Error: Column 7 of table ‘user_0.user_00′ cannot be converted from type ‘varchar(10)’ to type ‘varbinary(30)’
原变更语句为
alter table user_00 modify `column7` varbinary(30) NOT NULL DEFAULT ”;
原表中此字段类型为
`column7` varbinary(10) NOT NULL DEFAULT ”
s 命令显示此从库为5.5格式,并且复制是row格式。
官网查询后,发现这并不是一个bug,
http://bugs.mysql.com/bug.php?id=59424
在5.5的row格式复制中,有参数
slave_type_conversions来控制复制中主从结构不一致的处理
默认为”,即不支持主从字段类型不一致,
其它3种类型为:
all_lossy 支持有损转换,如int–>tinyint
all_non_lossy 支持无损转换,如char(20)–>varchar(25)
all_lossy,all_non_lossy 支持所有转换
此时手工在从库上执行:
set global slave_type_conversions=’ALL_NON_LOSSY’;
start slave;
复制恢复正常
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。