问题
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,
....
回答1:
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;
来源:https://stackoverflow.com/questions/28117231/mysql-replication-tokudb-replica-column-x-of-table-database-table-cannot-be