tidb 修改字段报错:“Message”: “execute statement failed: ALTER TABLE spamcenter.audit_cinfo CHANGE COLUMN ac_ext ac_ext VARBINARY(1000) NOT NULL DEFAULT ‘[]’ COMMENT ’ json’: Error 8200: Unsupported modify charset from utf8 to binary”,

tidbv4.0.1
修改一个字段从char 到varbinary ,报错如下,请问是什么原因 ?
我添加这个类型的字段没问题,但是change column 到这个类型就报错了

不支持从 char 变更到 varbinary,可以 add column 来增加 varbinary 类型字段,防止数据出现截断等风险‘

上游业务的字段变更,通过dm 同步过来的报错。这种情况有什么好的解决办法么,能解决业务修改字段的需求。从varchar1000 变成varbinary(1000) .
因为 tidb 已经限制了不能进行有损的变更,修改成varbinary 是往变大的方向变更,不应该再限制吧。这样对上游业务修改字段的操作太不友好了。

– 如下是同步的报错信息
“Message”: “execute statement failed: ALTER TABLE spamcenter.audit_cinfo CHANGE COLUMN ac_ext ac_ext VARBINARY(1000) NOT NULL DEFAULT ‘[]’ COMMENT ’ json’:
Error 8200: Unsupported modify charset from utf8 to binary”,

这种 varchar 转 varbinary 本质上就是 charset 的变换。如果上游进行了变更导致 DM 同步停止的话。建议可以添加新的 column 然后同步两个 column 的值 。最后再跳过 DM 的报错。DM 跳过的方式可以参考:
https://docs.pingcap.com/zh/tidb-data-migration/dev/skip-or-replace-abnormal-sql-statements#跳过或替代执行异常的-sql-语句

好的明白。多谢。

:+1::+1::+1:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。