mysql8 org.springframework.dao.CannotAcquireLockException

环境

mysql8, gradle5.6, flyway6.1, spring boot 5.1.9
执行 gradle moduleName:test然后开启三个线程跑测试,则报错,内容如下。如单独执行这个测试,则不会报错

Request processing failed; nested exception is org.springframework.dao.CannotAcquireLockException: xxxMapper.insert (batch index #1) failed. Cause: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction

链接: https://pan.baidu.com/s/1ViFd... 提取码: m1gx 复制这段内容后打开百度网盘手机App,操作更方便哦

百度云盘这里面有数据库的一些查询结果。

疑问点是同一个ENGINE_TRANSACTION_ID 怎么生成了新的EVENT_ID,并且也没找到这个EVENT_ID的详细信息,他为什么一直不释放?

阅读 4.2k
1 个回答

不可以直接转为付费问答吗?这个功能怎么不实现呢?

问题已解决

通过查看mysql的一些performanceSchema最终找到了答案。我的业务是主从表在一个事务中创建。这个表创建了外键,有外键检查,主表的插入是sleep,从表是waiting。最终导致了超时。将外键去掉解决了。

深层次的为啥正式环境不报错,为啥单独跑这个文件也不报错。就gradle test报错,还没有得到答案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题