OceanBase主键自增

【 使用环境 】生产环境
【 OB or 其他组件 】OceanBase
【 使用版本 】社区版
【问题描述】我的测试环境使用MySQL时主键是采用自增的形式,在我的业务中,使用的是SpringBoot+mybatis+mysql等相关技术,测试环境数据是能正常插入到数据库中的,但是当我将测试环境的数据库表结构和数据往生产环境OceanBase数据库做迁移的时候,测试业务的时候发现有时候id没有生成,一直会报空指针异常,我看了一下迁移过来之后的表结构的自增策略是Order,
【复现路径】问题出现前我将测试环境的表结构批量导出,用oceanBase执行SQL。在生产测试相关业务,发现有时候报错,日志显示空指针异常。问题出现后比对测试环境和生产环境的表结构并在测试环境使用相同的数据进行业务测试没有问题,但是OceanBase会报空指针

2 个赞

这个问题不复杂,能否发一下 mysql和 oceanbase里的表结构?


我用的是mybatis的xml去写的,OceanBase给出的错误如下:

但是我使用mysql是没有报错的,数据是能够正常插入进去的

恩。可以从两个方向去分析这个问题。
一是 看看mybatis 里 useGeneratedKyes=true 这个具体逻辑是怎样的?
二是到租户里 查询 gv$ob_sql_audit 找到报错的 sql 发出来。查询条件:tenant_id=租户id and is_executor_rpc=0 and user_name = ‘你的用户名’ and ret_code <0 and query_sql like ‘%insert%’