关于FLOWABLE中MYBATIS 事务的问题

大板牙花生 2021-03-29 03:55:06

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:952)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3409)
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3407)
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:498)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
... 107 common frames omitted
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
### The error may involve org.flowable.engine.impl.persistence.entity.ActivityInstanceEntityImpl.insertActivityInstance-Inline
### The error occurred while setting parameters
### SQL: insert into ACT_RU_ACTINST ( ID_, REV_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, DELETE_REASON_, TENANT_ID_ ) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
at org.flowable.common.engine.impl.db.DbSqlSession.flushRegularInsert(DbSqlSession.java:509)
at org.flowable.common.engine.impl.db.DbSqlSession.flushInsertEntities(DbSqlSession.java:493)
at org.flowable.common.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:473)
at org.flowable.common.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:358)
at org.flowable.common.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:192)
at org.flowable.common.engine.impl.interceptor.CommandContext.close(CommandContext.java:61)
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:81)
at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:51)
at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56)
at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:51)
at org.flowable.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:213)
at com.zyd.shiro.controller.RestFlowActiondoController.apply(RestFlowActiondoController.java:239)
at com.zyd.shiro.controller.RestFlowActiondoController$$FastClassBySpringCGLIB$$ab2bac1e.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
提示错误如上,这个如何去解决?


另外,看到flowable对数据的操作都是没有加事务处理的,如何保证一致性?特别是关于读取任务变量的问题。
...全文
840 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GenosYu 2022-11-01
  • 打赏
  • 举报
回复

博主这个问题解决了吗?

大板牙花生 2022-11-02
  • 举报
回复
@GenosYu 解决了,清空表内数据重新启动
大板牙花生 2021-04-01
  • 打赏
  • 举报
回复
这个确实是锁表的问题,但问题是说如何处理flowable 的事务?因为floawble本身的数据操作会涉及大量运算,特别是存储varieties变量的时候。该如何进行事务设计?
hbhbhbhbhb1021 2021-03-30
  • 打赏
  • 举报
回复
锁表了啊,从mysql那里看看是什么东西把表锁住了,再从那个点去看看呢
J2eeFAST是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发去。在线代码生成功能,包括核心模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、license认证,BPM工作流等。采用松耦合设计;界面无刷新,一键换肤;众多账号安全设置,密码策略;在线定时任务配置;支持多数据源;支持读写分离、分库分表。 J2eeFAST功能: 1、用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2、部门管理:配置系统组织机构(公司、部门),树结构展现支持数据权限。 3、岗位管理:配置系统用户所属担任职务。 4、菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5、角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6、字典管理:对系统经常使用的一些较为固定的数据进行维护。 7、参数管理:对系统动态配置常用参数。 8、操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 9、登录日志:系统登录日志记录查询包含登录异常。 10、在线用户:当前系统活跃用户状态监控。 11、定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 12、代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 13、服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 14、在线构建器:拖动表单元素生成相应的HTML代码。 15、连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 16、产品许可: 对项目进行许可证书控制,防止程序拷贝运行。 17、公告通知: 针对项目升级重要情况出通知公告直接生成静态页面,可以实现延迟推送,设置时效性,实时。 J2eeFAST软件架构: 核心框架:Spring Boot 2.2.5.RELEASE 安全框架:Apache Shiro 1.4.2 模板引擎:Freemarker 前端:AdminLTE 2.3.8, Bootstrap 3.3.7, Bootstrap-Table 1.11.0, JQuery 3.3.1 持久层框架:MyBatis-Plus 3.3.1 定时任务: Quartz 数据库连接池:Druid 1.10.1 数据库: Mysql5.7 分布式缓存数据库: Redis 4.0.9 工具类:Hutool 4.5.8 工作流引擎:flowable 6.4.2 J2eeFAST安装教程: 1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上、开发工具eclipse或者IEDA。 2、下载源码git clone https://gitee.com/zhouhuanOGP/J2EEFAST.git。 3、编译代码找到根目录下pom.xml,执行mvn clean install命令编译一键打包。一般来说不会有什么问题,如果还是编译不成功,可以按照优先级逐个编译试一试。 4、导入数据库db目录里initDb.sql有建库建表语句按步骤执行即可。 5、将代码导入开发工具fast-admin启动模块- 执行FastApplication类即可 注意:fast-admin模块,资源目录application-Test.yml修改连接数据库和链接地址;如果你是按照initDb.sql建库,test.sql导入初始数据,则账号密码用户名都不需要修改。 6、搭建文档。 最大管理员账号:admin 密码:admin。其他账户密码都是123456 演示地址的账号 :admin 密码:admin   J2eeFAST企业级快速开发平台 v2.2.1 更新日志: 升级mybatisplus到最新版本3.4.2 新增数据库脚本自动升级 适配恶心的IE浏览器最低适配IE10 修复添加SQLServer数据库源问题 修复多源数据JTA事务问题 新增多源数据支持Mapper接口注解 修复表格显示图片点击事件问题 优化适配移动端 linux环境升级、启动脚本备份文件无目录问题 修复多源数据库代码生成切换数据库问题 修复oracle兼容问题 修复代码生成器生成头像问题 修复适配数据库执行语句问题 新增金额转换文通用方法 修复代码生成div标签问题 调整文件上传考虑事务问题、不删除文件 移除项目pom文件多余配置 新增系统默认配置文件 简化配置文件 移除代码默认密码字段 新增base64字符判断公用方法 优化图片上传支持直接Base64字符 新增表格通过id获取行

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧