【问题标题】:mysql replication (TokuDB replica): Column X of table 'database.table' cannot be converted from type 'varchar(Y)' to type 'varchar(Y)'mysql复制(TokuDB副本):表'database.table'的列X不能从'varchar(Y)'类型转换为'varchar(Y)'类型
【发布时间】:2015-03-22 22:11:26
【问题描述】:

查看输出时遇到此错误

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

Replica - 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,
....

【问题讨论】:

    标签: mysql innodb tokudb


    【解决方案1】:

    事实证明,这两个表的定义有一个区别。

    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;
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2019-08-26
      • 2015-11-05
      • 2012-09-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多