mysql 1677_【MySQL】Error Code:1677处理过程小记

Error number: 1677; Symbol: ER_SLAVE_CONVERSION_FAILED; SQLSTATE: HY000

Message: Column %d of table '%s.%s' cannot be converted from type '%s' to type '%s'

这是MySQL官方文档里的提示,其实很直接,就是两边的表结构(Column定义)不一致导致的。那么我们碰到这个问题该如何解决呢?

突然,有报警来了说,主从复制中断,但是有报错。报错code就是1677。但是没有特别详细的报错信息:[ERROR] Slave SQL for channel '': Worker 2 failed executing transaction 'c7ce4eab-e267-11e9-a020-00163e01d452:221617008' at master log mysql-bin.000960, end_log_pos 385262704; , Error_code: 1677

从日志的报错信息,来看一点有用的信息都没有。还得自己去解析对应的binlog来查看。看了一个之后,后面的报错信息依然。于是去官方查了下相关的资料。发现一个参数“slave_type_conversions”,配置成“all_non_lossy”可以无损转化。于是配置上此参数后,继续重新启动主从复制。在配置此参数后,在日志中,终于有了有用的信息如下:[ERROR] Slave SQL for channel '': Worker 1 failed executing transaction 'c7ce4eab-e267-11e9-a020-00163e01d452:221617008' at master log mysql-bin.000960, end_log_pos 385262704; Column 37 of table 'xxx.xxxx' cannot be converted from type 'varchar(60(bytes))' to type 'tinyint(3) unsigned', Error_code: 1677

跟着日志一步一步解决,即可让主从复制恢复正常。此次故障的结果来说还算完美。

自己的一些看法:虽然故障解决了,但是还得去做主从数据一致性性的校验。数据量小的时候还算可以。但是数据量大就比较麻烦了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值