场景:
虽然TiDB号称完全兼容MySQL 5.7 协议、MySQL 5.7 常用的功能及语法,但是其与MySQL数据库仍然存在一些差异,可能会导致下游TiDB环境故障。以下是我们使用TiDB时需要重点关注的差异点,这些差异可能会导致数据同步任务失败,TiDB中数据无法实时更新
原因分析与解决:
-
不能在单条 ALTER TABLE 语句中完成多个操作。例如,不能在单个语句中添加多个列或索引,否则,可能会输出Unsupported multi schema change
的错误。
示例:alter table test1 add column t1 varchar(10) comment '字段1',add column t2 int comment '字段2';
该语句可在mysql中可以执行成功,但是DTS同步到TiDB中会出错,导致目标库DDL执行失败。目标库字段会缺失,后续的DTS同步任务会出错
解决办法:单条alter table中只完成一个操作,如需添加多列,将DDL拆分成多条alter table语句。
-
不支持将字段类型修改为其超集,例如不支持从 INTEGER 修改为 VARCHAR,或者从 TIMESTAMP 修改为 DATETIME,
否则可能输出的错误信息 Unsupported modify column: type %d not match origin %d。
-
更改/修改数据类型时,不支持“有损更改”,例如不支持从 BIGINT 更改为 INT。
-
更改/修改 DECIMAL 类型时,不支持更改精度。
-
更改/修改整数列时,不允许更改 UNSIGNED 属性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)