Mycat的事务异常:Caused by: java.sql.SQLException: Transaction error, need to rollback.Distributed transaction is disabled!
工作中踩到的一个坑 ,一个报错,导致整个服务不能用。工程部署四个节点,请求是按轮询机制分发的,所以请求四次报错,整个系统瘫痪。记录下 。
项目环境:spring +Mybaties +mycat +Druid+mysql,
很早前写的一个新增方法,后来同事把表迁移到别的库去了 ,但是日志表又没有迁移 ,所以新增的表和日志表不在一个物理库中,而新曾的方法又开启了spring事务,
但是系统mycat把分布式事务关了 ,没有开分布式事务,然后请求过来就报错:如标题不支持分布式事务。而且,一报错,后续进来的请求,只要开启了事务,就会报同样的错。
这个我现在都没弄清楚。请求事务方法如下代码:
public int save(List<GwAcceptCriteria> entityList) throws Exception { // 方法加入spring事务支持。
        if(null == entityList||entityList.isEmpty())
            return 0;
        ArrayList<BaseLog> Logs =  new ArrayList<>();
        ArrayList<GwAcceptCriteria> saveData =  new ArrayList<>();
        for (GwAcceptCriteria gwAcceptCriteria : entityList) {
            gwAcceptCriteria.setCreateEmp(BaseContextUtil.getCurrentUser());
            gwAcceptCriteria.setCreateTime(DateUtils.getNow());
            gwAcceptCriteria.setModifyTime(DateUtils.getNow());
            BaseLog log = getBLog(OperateTypeUtil.ADD_TYPE , null, gwAcceptCriteria);
            Logs.add(log);
            if(isDuplicates(gwAcceptCriteria)) {// 校验数据库数据是否重复 数据库节点DB1
                continue;
            }
            saveData.add(gwAcceptCriteria);
        }
        if(saveData.isEmpty())
            return 0;
        int  num = gwAcceptCriteriaMapper.insertList(saveData);
        baseLogManager.saveList(Logs); // 保存实体日志  数据库节点DB2
        logger.info(">>>>>>>>>>> 官网收寄标准管理-->{}<--数据{}条 ", OperateTypeUtil.ADD_TYPE,num);
        return num;
    }
报错异常如下图片:

解决方法:
1.把方法内操作的数据表统一到一个物理库。
2.关闭方法的事务支持。
Mycat的事务异常:Caused by: java.sql.SQLException: Transaction error, need to rollback.Distributed transaction is disabled!的更多相关文章
- 异常:Caused by: java.sql.SQLException: Field 'cust_id' doesn't have a default value
		
异常: 由Java.q.L.SqLExpExt引起:字段“CuSTyID”没有默认值 Caused by: java.sql.SQLException: Field 'cust_id' doesn't ...
 - Oracle异常:Caused by: java.sql.SQLException: ORA-01536: 超出表空间 '登录名' 的空间限额 (JPA保存数据)
		
原因: Oracle表空间为0,没有分配空间内存. 解决办法在代码框里: 1. 查看用户表空间的限额 select * from user_ts_quotas; max_bytes字段就是了 -1是代 ...
 - 数据库连接异常  Caused by: java.sql.SQLException: Unknown system variable 'tx_isolation'
		
1.错误截图 2.错误分析 数据库的版本比连接驱动的版本高很多. 3.解决方法 因此将mysql-connector-java升级到最新版本就解决了问题. 原本我的版本是mysql-connector ...
 - hibernate 出现Caused by: java.sql.SQLException: Column 'id' not found.异常
		
用hibernate进行映射查询时,出现Caused by: java.sql.SQLException: Column 'id' not found 异常,检查数据库表及映射都有id且已经正确映射, ...
 - Caused by: java.sql.SQLException: Incorrect integer value: '' for column 'clientId' at row 41
		
1.错误描述 [ERROR:]2015-06-10 13:48:26,253 [异常拦截] oa.exception.ExceptionHandler org.hibernate.exception. ...
 - Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0
		
1.错误描述 [ERROR:]2015-05-05 16:35:50,664 [异常拦截] org.hibernate.exception.GenericJDBCException: error ex ...
 - Caused by: java.sql.SQLException: Operand should contain 1 column(s)
		
1.错误描述 [ERROR:]2015-05-05 15:48:55,847 [异常拦截] org.hibernate.exception.DataException: error executing ...
 - Caused by: java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@d7c365, see the next exception for details.
		
解决方法:https://stackoverflow.com/questions/37442910/spark-shell-startup-errors 异常: 18/01/29 19:04:27 W ...
 - Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see lo
		
系统启动,一段时间不操作,然后在来操作时,报错如下: Caused by: java.sql.SQLException: Couldn't perform the operation getAutoC ...
 
随机推荐
- fabric运行记录
			
创建第一个fabric网络 Generate Network Artifacts cd first-network 先关闭服务 ./byfn.sh -m down 然后创建 ./byfn.sh -m ...
 - rz安装
			
rpm -ivh http://www.rpmfind.net/linux/centos/6.10/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.r ...
 - mui中openWindow方法的通用封装
			
因为做项目跳转新页面和传参的场景太多了,而且有的页面需要的跳转动画也不一样,每次都写一大堆openWindow方法的配置项太麻烦,因此自己简单封装了一个小函数,用来方便webview页面的跳转和传参. ...
 - Django 小实例S1 简易学生选课管理系统 3 创建用户模型(model)
			
Django 小实例S1 简易学生选课管理系统 第3节--创建用户模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新 ...
 - php 递推 递归
			
思想:如何利用数学模式,来解决对应的需求问题,然后利用代码实现对应的数据模型(逻辑) 算法:使用代码实现对应的数学模型,从而解决对应的业务问题 递推算法是一种简单的算法,级通过已知条件,利用特定关系得 ...
 - Asp.Net Core中简单使用日志组件log4net
			
本文将简单介绍在.NET 6中使用log4net的方法,具体见下文范例. 1.首先新建一个ASP.NET Core空项目 2.通过Nuget包管理器安装下面两个包 log4net Microsoft. ...
 - [hdu6973]Bookshop
			
将询问拆成$x$到$lca$和$lca$($lca$靠近$y$的儿子)到$y$两部分,分别处理(后者以前者的答案为基础) 两者是类似地,不妨仅考虑前者:用树剖将该询问拆成dfs序上若干个 ...
 - [atARC121F]Logical Operations on Tree
			
(特判$n=1$的情况) 当确定权值和操作后,如何判定是否合法-- 考虑一个度为1的节点,对其权值即其对应边的边操作分类讨论: $1\or$,显然只需要最后选择这条边即可,一定合法 $1\and$或$ ...
 - Java-ASM框架学习-修改类的字节码
			
Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visit ...
 - mysql密码忘记如何恢复(windows/liunx版本:mysql-8.0.27)
			
windows/liunx版本:mysql-8.0.27参考官网文档: https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.ht ...