我Working around MySQL error “Deadlock found when trying to get lock; try restarting transaction”MySQL JDBC:在InnoDB死锁之后是否有自动重试的选项?
我发现,该交易可以安全地重新尝试
死锁不危险的。再试一次。
http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html
有一个单一的“超级insert..select”上的瓶颈表中选择其他两个表的连接组合,并使用子报表的条件,以及一个后插入瓶颈TABLE语句几张小桌子。
瓶颈是“等待锁”,它正在等待写锁定毫无疑问。 InnoDB看起来非常合适。 (对于书写繁多的表格)而这一个陈述的犹豫现在都消失了。
但是现在问题出现了:对于语句的每100次执行,大约1或2个语句会因为死锁而失败。我相信死锁只发生在“super insert..select”的实例之间。我将安装该声明的自动重试,但我不知道
问:用MySQL JDBC有一个选项,收到异常后打开报表的自动重试,还是我写我自己的代码那?
com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
在这种情况下,我没有启动事务或停止事务命令。只需要一个“超级插入...选择”语句
我认为答案是否定的。 –
@GeorgeBailey答案是重试整个交易,而不仅仅是声明。 – EJP