表是 InnoDB ,每次更新会 update 大约 200 多行。
每次都开了事务基本的逻辑如下:
1 获取 Redis lock
2 得到锁后,开启 transaction
3update 大概 200 列
4 transaction commit
5 释放 Redis lock
返回结果给调用者
用了 Redis 分布锁,所以不会出现 2 个 thread 同时开事务,同时 update 的情况。但是代码还是会报如下 exception :
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get
请问下,这种错误是因为什么?
每次都开了事务基本的逻辑如下:
1 获取 Redis lock
2 得到锁后,开启 transaction
3update 大概 200 列
4 transaction commit
5 释放 Redis lock
返回结果给调用者
用了 Redis 分布锁,所以不会出现 2 个 thread 同时开事务,同时 update 的情况。但是代码还是会报如下 exception :
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get
请问下,这种错误是因为什么?