从库是有个Oracle系统去查数据的,原先从库的cp_shop_activity表示utf8mb4字符集,oracle不支持。因此在这个从库上手动修改了mode字段的字符类型为varchar(200) utf8,修改后的字段类型如下图:
但是没几天后,发现主从复制报错了,错误码1677。从库上记录的错误日志如下:
我们看下主库的mode字段是varchar(50),从库的mode字段是varchar(200)。
在从库设置:
stop slave;
set global slave_type_conversions=ALL_NON_LOSSY;
# 默认slave_type_conversions为空,表示强制从库和主库的字段类型一致,不然就停止复制。设置为ALL_NON_LOSSY就稍微宽泛些同时确保不会造成类型转换的问题。
start slave;
show slave status\G
这样即可解决这个问题。
官方文档:https://dev.mysql.com/doc/refman/5.6/en/replication-features-differing-tables.html