OMS迁移服务新建迁移任务时设置排序字符集映射无效

如下图,我的需求是从MySQL迁移到Oceanbase,但是在MySQL中有部分表和字段的字符序是 utf8mb4_0900_ai_ci,我想在迁移到Oceanbase时统一设置为 utf8mb4_general_ci,便做了如下映射设置,但是测试结果并没有按预期生成create table语句。建表字符序仍旧为utf8mb4_0900_ai_ci。请问是我使用的不对还是什么原因嗯?

oms版本:4.2.10




估计是bug :joy:

不会吧。 我宁愿怀疑是我使用的方式不对。 有没有什么变通的方法呢?

目前的逻辑是这样的,源端表的字符集如果在目的端是支持的,则不会按照配置的映射转换,强制按照源端字符集转换。 只有源端字符集在目的端不支持时,才会按照配置的字符集映射转换

2 个赞

有没有变通的方法来实现,比如“欺骗”OMS让他以为ob不支持0900? 或者其他方法?

1 个赞

这个肯定没法欺骗了 :joy:,手动创建表

好吧,那还是建议

1.如果不麻烦的话不用那么复杂,做字符序映射本质上来说就是建表语句的SQL替换,感觉没太多必要需要考虑【只有源端字符集在目的端不支持时,才会按照配置的字符集映射转换】。因为我遇到过因为不同表字段之间因为字符序不同导致的连表查询有问题的事情。即便字符序都支持,也可能想要统一字符序,所以我觉得这个需求还是很合理的。

2.如果确实没办法做支持的字符序进行映射,可以在OMS新建结构迁移配置字符集映射的页面上对这个进行说明:【只有源端字符集在目的端不支持时,才会按照配置的字符集映射转换】这样不会产生一些非预期的行为:我明明配置了,却没按照预期执行,也没看到其他说明。导致认为这可能是个BUG或者是不是使用方式不对。

1 个赞

看到欺骗一下子笑了,还可以有这样的想法

目前的逻辑是这样的,源端表的字符集如果在目的端是支持的,则不会按照配置的映射转换,强制按照源端字符集转换。 只有源端字符集在目的端不支持时,才会按照配置的字符集映射转换