原因
事务嵌套导致死锁,一个service中调用了另一个service,两个service又对同一表进行操作,同时操作了相同的数据,造成的。
解决
(1)关掉该事务
SELECT * FROM information_schema.INNODB_TRX;
kill 3975
(2)在当前事务上加上
@Transactional(propagation=Propagation.SUPPORTS)
注意:如果业务中有操作了相同的数据,而且数据前后有很重要的关联性,强烈建议两个service分开调用,这时无论如何也不能使用@Transactional(propagation=Propagation.SUPPORTS),否则会导致数据成为脏数据,影响数据的正确性