mysql复制(TokuDB副本):表'database.table'的列X无法从类型'varchar(Y)'转换为'varchar(Y)'类型

时间:2015-01-23 19:24:22

标签: mysql innodb tokudb

在查看

的输出时遇到此错误
SHOW SLAVE STATUS\;

这是状态输出的摘录:

   Last_SQL_Errno: 1677
   Last_SQL_Error: Column 1 of table 'database.table' cannot be converted 
                   from type 'varchar(16)' to type 'varchar(16)'

配置:

Master - Mysql 5.6.x //有错误的表有ENGINE = InnoDB

副本 - Percona 5.6.x //有错误的表有ENGINE = TokuDB

主服务器和复制服务器上的列定义完全匹配:

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 个答案:

答案 0 :(得分:2)

事实证明两个表的定义之间的一个区别。

CHARSET是真正的罪魁祸首。

站长:

...
) ENGINE=InnoDB AUTO_INCREMENT=XXXXX DEFAULT CHARSET=latin1

副本:

...
) ENGINE=TokuDB AUTO_INCREMENT=XXXX DEFAULT CHARSET=utf8

在重新启动复制之前“修复”表所需的命令:

ALTER TABLE database.table CONVERT TO CHARACTER SET latin1;