MyCATApache / Mycat-Server

GNU General Public License v2.0
9.51k stars 3.85k forks source link

XA分布式事务,只支持单条SQL? #1631

Open forward9 opened 7 years ago

forward9 commented 7 years ago

进行以下操作: 开启分布式事务, 执行两条插入SQL, 提交事务.

执行后, 出现以下问题: 执行多条SQL时会报java.sql.SQLException: XAER_DUPID: The XID already exists。 从后台日志中看到每次执行SQL都会带有XA START xid; 在第二条SQL执行时就会报The XID already exists。

yw9002 commented 7 years ago

同问,你现在有没有解决这个问题?

forward9 commented 7 years ago

@yw9002 测出这个问题, 但是没有修改. 等待官方的解决方案.

forward9 commented 7 years ago

1.6.5-BETA 解决以下场景: db1中一条insert语句, db2中一条insert语句. 未解决: 如果在db1中操作两条insert语句, 千万不要开启分布式事务, 开启此事务不仅影响效率, 最主要的是会报错(XAER_DUPID: The XID already exists). 如果db1中两条insert语句, db2中两条insert语句, 还是会报XAER_DUPID: The XID already exists。

liutaihua commented 7 years ago

1.6.5版本xa事务无法使用,报ERROR 2013 (HY000): Lost connection to MySQL server during query

后端mysql 版本 5.7.19, 手动去mysql里执行 xa start 'test'; insert xxxxxx; xa end 'test'; .....知道xa commit都是可以的。

在mycat里 用mysql shell 连 8066, 执行set autocommit=0; set xa=1; insert xxxx之后,执行commit就会报错

lazio579 commented 6 years ago

不嫌弃网易中间件的话,可以尝试我们的cetus( https://github.com/Lede-Inc/cetus ),分布式事务对用户透明