Administrator
发布于 2022-06-27 / 264 阅读 / 0 评论 / 0 点赞

解决seata使用mycat代理库找不到表元数据问题

因为seata会读取数据库元数据信息,此时会读取到表的实际库名,但是服务数据库连接池是使用的代理数据库,回滚或者提交会使用实际库名,导致找不到表报错

临时修改seata-all.jar中的代码

加入以下代码,将读取到的实际数据库替换为mycat代理数据库,代码路径为:

io.seata.rm.datasource.sql.struct.cache.MysqlTableMetaCache#resultSetMetaToSchema

image