oms4.2.10 同步报错“Unknown column 'ORGANIZATION' in 'field list'”

环境版本:社区版 oms-4.2.10,
ob 生产版本:企业版4.3.5.1
ob 测试版本:社区版4.3.5.4

用社区版的oms 同步 企业版的数据到社区版 4.3.5.1 → 4.3.5.4 同步表结构报错:
oms 同步页面报“获取ddl失败”

dbca日志:
SELECT
TABLE_NAME AS TABLE_NAME,
ENGINE AS ENGINE,
ROW_FORMAT AS ROW_FORMAT,
AUTO_INCREMENT AS AUTO_INCREMENT,
TABLE_COLLATION AS TABLE_COLLATION,
CREATE_OPTIONS AS CREATE_OPTIONS,
REPLACE(TABLE_COMMENT,’’’’,’’’’’’) AS TABLE_COMMENT,
TABLE_COLLATION AS CHARACTER_SET_NAME,
ORGANIZATION AS ORGANIZATION
FROM information_schema.TABLES T
WHERE TABLE_SCHEMA=? AND TABLE_TYPE=? AND TABLE_NAME IN (?,?,?,?,?,?,?,?,?), Args: [fcs, BASE TABLE, unit_price_role_update_log_backup_20240531, unit_price_role_update_task_backup_20240531, income_order_backup_20240531, order_income_detail_2020, sku_info, income_error_record, order_income_detail_2021, order_income_detail_2022, order_income_report_20240710]
java.sql.SQLSyntaxErrorException: (conn=1068914) Unknown column ‘ORGANIZATION’ in ‘field list’
If column exists but type cannot be identified (example ‘select ? field1 from dual’). Use CAST function to solve this problem (example ‘select CAST(? as integer) field1 from dual’)
at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:108)
at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:200)
at com.oceanbase.jdbc.OceanBaseStatement.executeExceptionEpilogue(OceanBaseStatement.java:310)
at com.oceanbase.jdbc.JDBC4PreparedStatement.executeInternal(JDBC4PreparedStatement.java:242)
at com.oceanbase.jdbc.JDBC4PreparedStatement.execute(JDBC4PreparedStatement.java:161)
at com.oceanbase.jdbc.JDBC4PreparedStatement.executeQuery(JDBC4PreparedStatement.java:175)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227)
at com.oceanbase.obtools.dbdiff.jdbc.template.JdbcTemplate.queryMap(JdbcTemplate.java:215)
at com.oceanbase.obtools.dbdiff.accessor.obmysql.ObMySqlMetadataAccessor.queryTableMapping(ObMySqlMetadataAccessor.java:670)
at com.oceanbase.obtools.dbdiff.accessor.obmysql.ObMySqlMetadataAccessor.queryMetadata(ObMySqlMetadataAccessor.java:177)
at com.oceanbase.obtools.dbdiff.accessor.obmysql.ObMySqlMetadataAccessor.queryMetadata(ObMySqlMetadataAccessor.java:127)
at com.oceanbase.obtools.dbdiff.builder.DefaultDatabaseBuilderImpl.build(DefaultDatabaseBuilderImpl.java:38)
at com.oceanbase.obtools.dbdiff.DbCat.convert(DbCat.java:80)
at com.alipay.oms.dbcat.DbCatAdaptor.getObjectsWithRunDbcat(DbCatAdaptor.java:228)
at com.alipay.oms.dbcat.DbCatSliceAdaptor.getOneSlice(DbCatSliceAdaptor.java:122)
at com.alipay.oms.dbcat.DbCatSliceAdaptor.doGetAll(DbCatSliceAdaptor.java:88)
at com.alipay.oms.dbcat.DbCatSliceAdaptor.getAll(DbCatSliceAdaptor.java:80)
at com.alipay.oms.service.scheduler.StructHandler.richFieldProcessing(StructHandler.java:1305)
at com.alipay.oms.service.scheduler.StructHandler.ddlRecordBatchGetExecutor(StructHandler.java:2286)
at com.alipay.oms.service.scheduler.StructHandler$$FastClassBySpringCGLIB$$87af26b9.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:750)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at com.oceanbase.oms.common.util.trace.TraceUtil.lambda$wrap$1(TraceUtil.java:122)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:853)
Caused by: com.oceanbase.jdbc.internal.util.exceptions.OceanBaseSqlException: Unknown column ‘ORGANIZATION’ in ‘field list’
If column exists but type cannot be identified (example ‘select ? field1 from dual’). Use CAST function to solve this problem (example ‘select CAST(? as integer) field1 from dual’)
at com.oceanbase.jdbc.internal.util.exceptions.OceanBaseSqlException.of(OceanBaseSqlException.java:79)
at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:196)
at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:177)
at com.oceanbase.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:359)
at com.oceanbase.jdbc.JDBC4PreparedStatement.executeInternal(JDBC4PreparedStatement.java:233)

对比了下,企业版的4.3.5.1 information_schema.tables 的确没有“ORGANIZATION” 这个字段

请教下,这个问题该怎么解决

2 个赞

发布版本有问题?

不同版本还是有差异的

这种迁移方式大概是不支持的,我们再确认下

之前我们有用oms(4.2.3) 从云版,企业版,同步到线下的社区版,只是升级版本之后同步表结构就会有问题,但是同步数据是可以的

完整的dbcat日志方便上传一下吗


https://www.oceanbase.com/product/oceanbase-database-rn/releaseNote#V4.3.5
4.3.5.1应该是有这个列的吧,select version()看一下版本,查一下information_schema.TABLES看有哪些字段




dbcat.log (69.9 KB)