sonarqube7.8从mysql换成oceanbase社区版V2.4.0,启动建表就报错

【 使用环境 】 测试环境
【 OB or 其他组件 】oceanbase社区版,V2.4.0
【 使用版本 】
【问题描述】sonarqube7.8社区版,数据库做升级替换,选型oceanbase,sonar和oceanbase均安装在linux服务器上,创建好ob之后新建用户,给了所有权限(create user *** identified by ‘password’;
GRANT ALL ON . TO ***;),然后新建数据库,名称sonar,默认字符校对:utf8mb4_general_ci,然后配置sonar数据库连接信息,sonar.jdbc.username sonar.jdbc.password sonar.jdbc.url=jdbc:mysql://xx.xxx.xxx.xxx:2881/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false,随后使用sonar用户启动sonar(这里连接mysql是可以正常启动使用的,但是连接oceanbase并不能启动),启动报错,错误信息如下


【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

看报错是事务隔离级别不支持?

Populate initial schema 看下这个步骤执行了什么

改成和mysql一样的隔离级别试了下,可重复读,也是一样报错

没有详细的日志信息,但是看到数据库中在建表,疑似是建表的时候故障停止了,mysql同样的sonar库中初始化后有64个表,但是oceanbase初始化失败后发现只有45张表

我怀疑这个地方可能有兼容性问题,可以看下没有建成的表,建表语句是什么,在OceanBase上执行下

oceanbase中初始化的表字段不全,我把表全删除,然后将mysql的表全部导入到oceanbase,奇迹般的成功了,然后sonar服务也可以正常启动,但是我试着扫描了一个项目到sonar上,sonar上显示报错,报错截图如下

目前看 SonarQube 在建立数据库连接的时候 设置的事务隔离级别不支持
参考这个代码 DataChange.java

 private Connection createReadUncommittedConnection() throws SQLException {
    Connection connection = db.getDataSource().getConnection();
    connection.setAutoCommit(false);
    if (connection.getMetaData().supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_UNCOMMITTED)) {
      connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);  #这行报了错
    }
    return connection;
  }

建议删除这块代码,手动打包替换下

感谢大佬,我去试试