因为seata会读取数据库元数据信息,此时会读取到表的实际库名,但是服务数据库连接池是使用的代理数据库,回滚或者提交会使用实际库名,导致找不到表报错
临时修改seata-all.jar中的代码
加入以下代码,将读取到的实际数据库替换为mycat代理数据库,代码路径为:
io.seata.rm.datasource.sql.struct.cache.MysqlTableMetaCache#resultSetMetaToSchema
因为seata会读取数据库元数据信息,此时会读取到表的实际库名,但是服务数据库连接池是使用的代理数据库,回滚或者提交会使用实际库名,导致找不到表报错
临时修改seata-all.jar中的代码
加入以下代码,将读取到的实际数据库替换为mycat代理数据库,代码路径为:
io.seata.rm.datasource.sql.struct.cache.MysqlTableMetaCache#resultSetMetaToSchema