mysql replication (TokuDB replica): Column X of table 'database.table' cannot be converted from type 'varchar(Y)' to type 'varchar(Y)'

岁酱吖の 提交于 2019-12-11 10:17:43

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!