我用oms工具迁移mysql数据到oceanbase中遇到错误,oms版本是4.2.10,mysql版本是8.0.36 ,Oceanbase版本是OceanBase_CE-v4.3.5.3, 想知道oms遇到不认识 INVISIBLE 关键字如何解决?
这应该是 MySQL 特有的条件注释,当前oms不支持该功能,这边记录一下。
规避方法,手动在目标环境建表,然后跳过表结构就好了
这个根本原因应该是 Oracle MySQL 8.0.30 引入的不可见主键-Generated Invisible Primary Keys(GIPK) 特性导致的吧?
MySQL 8.0.30后,支持在没有显示定义主键的 InnoDB 表上自动生成“不可见的自增主键” my_row_id 字段。 而这个特性在 OceanBase MySQL中是暂不兼容的。
这种情况下有2种解决方式:
- OMS 工具侧 修改 这些表结构将 INVISIBLE 相关注释手工去除。 - 适应于迁移少量该种报错表的场景。
- MySQL 源端查出这些存在 Invisible 主键字段的业务表,手工用批量 ALTER SQL语句将隐藏主键 转为 普通主键 ,然后再进行迁移。如:
ALTER TABLE home_banner_setting ALTER COLUMN my_row_id SET VISIBLE;
1 个赞
手动导入表结构呢
oms 迁移的时候 不选择 结构迁移
只是需要注意的是,若源端 MySQL 中将该 隐藏主键 修改为 visible 后,后面业务侧再插入该表数据,就需要传入 主键字段 了。
用何种解决方式看你业务使用情况。
好的,我试试
好的,感谢

