问题描述:
Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
问题分析:
1、执行的insert、update、delete等更新数据库的语句出现了死锁问题。
解决办法:
第一步,执行select * from information_schema.innodb_trx语句,在innodb_trx表中找到trx_state为LOCK WAIT的数据。
第二步,执行kill trx_id语句,trx_id为trx_state=LOCK WAIT的数据的trx_id值。
2、两个线程同时更新一条数据, 其中一个线程为大事务,循环里面进行更新操作,导致事务迟迟没有结束,其他线程进行更新数据时出现死锁的情况。
解决办法:将事务的粒度从整个循环一个事务,拆分为每一次循环一个事务即可。