有一个用于表结构的缓存机制,默认时间为10分钟!
如果我们修改表的结构,则会导致SEATA异常,并且交易不能提交,从而导致错误。
解决方案方法如下:
1.等待10分钟之前。
2.修改源代码,不再从缓存中获取表结构。
哈哈,我们是一个,这绝对是选择!
因此,需要修改源代码。如下图所示:显示::
在buildRecords方法中对相关代码进行了细微调整,并且不再从缓存表结构tablemeta中获得,并从resultsetsetmetadata中更改。
有时,当我们执行更新操作时,我们可能需要更新,例如,以下内容:
但是,这样的SQL语句使用SEATA交易,这将导致不提交SEATA交易并导致错误。
它不支持默认值。在这里,我们需要修改源代码。
在(seata-rm-datasource)srcmainjava目录中,我修改io.seata.rm.datasource.exec。如下图所示:
在(seata-sqlparser)子模块seata-sqlparser-druidsrcmainjava目录中,io.seata.seata.sqlparser.druid.msql.msqlupdatreconizer类已修改,如下图所示:如下:
(1)SEATA-SQLPARPARPARSER-DRUIDSRCMAINJAVA目录中的SEATA-SQLPARSER,修改io.seata.sqlparser.druid.oracle。如下图所示:
(2)SEATA-SQLPARPARPARSER-DRUIDSRCMAINJAVA(SEATA-SQLPARSER),修改Oo.seata.rm.datasource.oracle.aracle.aracle.aracle.race.race.raceyword,如下图所示:
(1)MySQL数据库:
普通多观察连接
加入表
(2)Oracle,Kingbase(人民大会Jincang)和Dimeng数据库:
好吧,Seata的一些扩展,Seata源代码修改,就是这样!
今天在这里,很滑!交点简报^_^
我认为有收益,帮助!交叉触摸
原始:https://juejin.cn/post/710315485786741774