mysql innodb类型表复制不能用,mysql复制(TokuDB复制副本):表'database.table'的列X不能从类型'varchar(Y)'转换为'varchar(Y)'...

Experienced this error when reviewing the output of

SHOW SLAVE STATUS\;

this is the excerpt from the status output:

Last_SQL_Errno: 1677

Last_SQL_Error: Column 1 of table 'database.table' cannot be converted

from type 'varchar(16)' to type 'varchar(16)'

Configuration:

Master - Mysql 5.6.x // table with error has ENGINE=InnoDB

Replica - Percona 5.6.x // table with error has ENGINE=TokuDB

The column definitions on the master and the replicate servers match exactly:

SHOW CREATE TABLE database.table;

....

CREATE TABLE `table` (

`column_0` bigint(20) NOT NULL AUTO_INCREMENT,

`column_1` varchar(16) NOT NULL,

`column_2` varchar(50) NOT NULL,

....

解决方案

It turns out that there was one difference between the definition of the two tables.

The CHARSET was the the true culprit.

Master:

...

) ENGINE=InnoDB AUTO_INCREMENT=XXXXX DEFAULT CHARSET=latin1

Replica:

...

) ENGINE=TokuDB AUTO_INCREMENT=XXXX DEFAULT CHARSET=utf8

Command required to "fix" the table before restarting the replication:

ALTER TABLE database.table CONVERT TO CHARACTER SET latin1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值