AT模式下使用跨表更新时出现SQLTableSource强转错误

堆栈信息如下

Caused by: java.lang.ClassCastException: com.alibaba.druid.sql.ast.statement.SQLJoinTableSource cannot be cast to com.alibaba.druid.sql.ast.statement.SQLExprTableSource at io.seata.sqlparser.druid.mysql.MySQLUpdateRecognizer.getTableName(MySQLUpdateRecognizer.java:129) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.BaseTransactionalExecutor.getTableMeta(BaseTransactionalExecutor.java:206) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.UpdateExecutor.beforeImage(UpdateExecutor.java:69) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitFalse(AbstractDMLBaseExecutor.java:92) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.lambda$executeAutoCommitTrue$0(AbstractDMLBaseExecutor.java:111) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.doRetryOnLockConflict(ConnectionProxy.java:299) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor$LockRetryPolicy.execute(AbstractDMLBaseExecutor.java:155) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:110) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:74) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:115) ~[seata-all-1.3.0.jar:1.3.0] at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:113) ~[seata-all-1.3.0.jar:1.3.0] ... 106 common frames omitted

原提问者GitHub用户he953481025-debug

展开
收起
学习娃 2023-06-14 17:05:26 104 分享 版权
1 条回答
写回答
取消 提交回答
  • 不支持

    原回答者GitHub用户a364176773

    2023-06-14 17:33:01
    赞同 展开评论
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理