Spring Application抛出DeadLock异常:(目标方法使用默认的@Transactional注释进行注释)

org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL []; Deadlock found when trying to get lock; try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:263)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:941)
*** hidden *** 
at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201)
at com.sun.proxy.$Proxy20.newExtAdvertisement(Unknown Source)
*** hidden *** 
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
*** hidden *** 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

引起:com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException:尝试获取锁定时发现死锁;尝试在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)的sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)重启事务 . reflect.Constructor.newInstance(Constructor.java:422)在com.mysql.jdbc.Util.handleNewInstance(Util.java:406)在com.mysql.jdbc.Util.getInstance(Util.java:381)在com.mysql .jdbc.SQLError.createSQLException(SQLError.java:1045)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)在融为一体 . mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)在com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)在COM .mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)位于com的com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734) . mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)在com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)在com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)在COM .mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)在org.springframework.jdbc.core.JdbcTemplate $ 3.doInPreparedStatement(JdbcTemplate.java:944)在org.springframework.jdbc.core.JdbcTemplate $ 3 .doInPreparedStatement(JdbcTemplate.java:941)org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:642)... 25更多

但MySQL的命令

SHOW ENGINE INNODB STATUS

没有出现任何僵局!

什么类型的DEADLOCK spring 向我展示?我怎么能避免它呢?