OMS迁移表结构阶段报错,如何批量修改表结构

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】报错: (conn=1667693) OBE-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ‘ENABLE NOVALIDATE with column group (each column)’ at line 47
CONSTRAINT “PK_S_TSD_PBS_ORDER_INFO” PRIMARY KEY (“TXN_SEQ_ID”) ENABLE NOVALIDATE

问题原因:OceanBase 数据库目前不支持在主键约束、外键约束、唯一约束等约束类型中使用 ENABLE NOVALIDATE 语法。根据官方文档,OceanBase 仅在 CHECK 约束和 NOT NULL 约束下支持 ENABLE/DISABLE、VALIDATE/NOVALIDATE 和 RELY/NORELY 属性,其他约束类型均不支持这些约束状态属性,系统会忽略该选项。

解决方式:去掉建表语句中的ENABLE NOVALIDATE属性

【针对大量的表结构出现该问题,如何实现批量修改表结构,当前OMS貌似只能单个修改,这部分表结构记录到哪里的】

1 个赞

oms版本是什么

4.3.1_bp1

4.2以上版本主键约束好像是支持的,但不支持外键约束,解决办法是通过oms迁移数据是,先在ob数据库批量导入表结构创建,然后再迁移过程中,出现不支持的表进行忽略,不要选跳过,然后同步数据的时候就能正常同步。

您的意思是通过dbcat单独迁移表结构么,这个贴不局限于这个问题,如果全量迁移过程中在表结构阶段报错,需要修改表结构兼容OB,比如去掉源端表结构部分属性,假如哈有1000张表,需要去掉表结构相同的属性,如何批量修改,除了dbcat还有没有其他更好的方法

企业版的oms建议去咨询商业技术支持