确认

  • [X] 我使用的版本是最新版, 并且使用插件确认过项目里无依赖版本冲突
  • [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
  • [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题

当前程序版本

3.5.3.2

问题描述

mybatisplus版本,3.5.3.2,springboot版本2.5.15,jdk17,我是用里面的mapper操作的时候偶尔会报错,我是在多线程的换下操作的的,具体的代码如下: MyBatis-Plus [错误报告]: 描述 MyBatis-Plus [错误报告]: 描述,这个报错发生评率很高,我确定我的参数传递的没问题

详细堆栈日志

Exception in thread "threadPoolTaskExecutor-20" org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
### The error may exist in com/xjkj/mes/mapper/plan/DipPaintingSubPlanMapper.java (best guess)
### The error may involve com.xjkj.mes.mapper.plan.DipPaintingSubPlanMapper.updateById
### The error occurred while executing an update
### Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
    at jdk.proxy2/jdk.proxy2.$Proxy110.update(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
    at jdk.proxy2/jdk.proxy2.$Proxy199.updateById(Unknown Source)
    at com.xjkj.mes.service.plan.impl.PostProcessMainPlanServiceImpl.lambda$edit$3(PostProcessMainPlanServiceImpl.java:213)
    at com.xjkj.mes.service.plan.impl.CompletableFutureTransaction.lambda$doExecutor$0(CompletableFutureTransaction.java:33)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
### The error may exist in com/xjkj/mes/mapper/plan/DipPaintingSubPlanMapper.java (best guess)
### The error may involve com.xjkj.mes.mapper.plan.DipPaintingSubPlanMapper.updateById
### The error occurred while executing an update
### Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
    at jdk.internal.reflect.GeneratedMethodAccessor64.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
    ... 11 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:385)
    at java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:398)
    at com.alibaba.druid.filter.FilterChainImpl.nextFilter(FilterChainImpl.java:471)
    at com.alibaba.druid.filter.FilterChainImpl.connection_getAutoCommit(FilterChainImpl.java:325)
    at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.getAutoCommit(ConnectionProxyImpl.java:198)
    at com.alibaba.druid.pool.DruidPooledConnection.getAutoCommit(DruidPooledConnection.java:763)
    at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81)
    at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
    at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:345)
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
    at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
    at jdk.proxy2/jdk.proxy2.$Proxy112.update(Unknown Source)
    at jdk.internal.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
    at jdk.proxy2/jdk.proxy2.$Proxy112.update(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
    ... 15 more
Exception in thread "threadPoolTaskExecutor-17" org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
### The error may exist in com/xjkj/mes/mapper/plan/AssemblySubPlanMapper.java (best guess)
### The error may involve com.xjkj.mes.mapper.plan.AssemblySubPlanMapper.updateById
### The error occurred while executing an update
### Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
    at jdk.proxy2/jdk.proxy2.$Proxy110.update(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288)
    at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
    at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
    at jdk.proxy2/jdk.proxy2.$Proxy201.updateById(Unknown Source)
    at com.xjkj.mes.service.plan.impl.PostProcessMainPlanServiceImpl.lambda$edit$2(PostProcessMainPlanServiceImpl.java:207)
    at com.xjkj.mes.service.plan.impl.CompletableFutureTransaction.lambda$doExecutor$0(CompletableFutureTransaction.java:33)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
### The error may exist in com/xjkj/mes/mapper/plan/AssemblySubPlanMapper.java (best guess)
### The error may involve com.xjkj.mes.mapper.plan.AssemblySubPlanMapper.updateById
### The error occurred while executing an update
### Cause: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
    at jdk.internal.reflect.GeneratedMethodAccessor64.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
    ... 11 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:385)
    at java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:398)
    at com.alibaba.druid.filter.FilterChainImpl.nextFilter(FilterChainImpl.java:471)
    at com.alibaba.druid.filter.FilterChainImpl.connection_getAutoCommit(FilterChainImpl.java:325)
    at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.getAutoCommit(ConnectionProxyImpl.java:198)
    at com.alibaba.druid.pool.DruidPooledConnection.getAutoCommit(DruidPooledConnection.java:763)
    at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81)
    at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
    at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:345)
    at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
    at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
    at jdk.proxy2/jdk.proxy2.$Proxy112.update(Unknown Source)
    at jdk.internal.reflect.GeneratedMethodAccessor62.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
    at jdk.proxy2/jdk.proxy2.$Proxy112.update(Unknown Source)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
    ... 15 more

Comment From: XcLyyds00176859245146532

一样的修改参数的话,比如我修改十次,可能4次或者5次都有问题,几率快一半了

Comment From: miemieYaho

git形式给出你的复现demo

Comment From: huayanYu

Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:385) at java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:398) at com.alibaba.druid.filter.FilterChainImpl.nextFilter(FilterChainImpl.java:471) 这个错误不是druid的么 ,我记得druid有些版本在高并发下是否问题

Comment From: XcLyyds00176859245146532

抱歉,这个问题是代码配置有问题,谢谢,发现了确实是连接池有点问题 d690b251565bce326be69b4f72a33e7