Java MySQL JDBC:InnoDB死锁后是否有自动重试选项?

Java MySQL JDBC:InnoDB死锁后是否有自动重试选项?,java,mysql,innodb,deadlock,Java,Mysql,Innodb,Deadlock,我是 我发现交易可以安全地重新进行 死锁并不危险。再试一次。 在选择其他两个表的联合组合并使用瓶颈表和一些小表上的子语句条件后,有一个“super insert..select”语句插入瓶颈表 瓶颈是“等待锁”,它无疑是在等待写锁。InnoDB似乎非常适合。(对于写重表)和对这一陈述的犹豫现在都消失了 但现在问题出现了:每执行100次语句,就有1到2次会因为死锁而失败。我相信死锁只发生在“超级插入..选择”的实例之间。我将安装该语句的自动重试,但我想知道 问题:MySQL JDBC是否有选项在

我是

我发现交易可以安全地重新进行

死锁并不危险。再试一次。

在选择其他两个表的联合组合并使用瓶颈表和一些小表上的子语句条件后,有一个“super insert..select”语句插入瓶颈表

瓶颈是“等待锁”,它无疑是在等待写锁。InnoDB似乎非常适合。(对于写重表)和对这一陈述的犹豫现在都消失了

但现在问题出现了:每执行100次语句,就有1到2次会因为死锁而失败。我相信死锁只发生在“超级插入..选择”的实例之间。我将安装该语句的自动重试,但我想知道

问题:MySQL JDBC是否有选项在收到异常后打开语句的自动重试,或者我必须为此编写自己的代码

com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction

在这种情况下,我没有启动事务或停止事务命令。只需一个“super insert..select”语句

您就可以重复该语句,但在理想情况下,您应该回滚事务并重新启动它。在这个世界上,您的事务会很短:)

@GeorgeBailey答案是重试整个事务,而不仅仅是语句。