我在MYSQL中使用表名“test”,该表名在事务 T1 期间被锁定,该事务将在 20 分钟内完成。当我在这 20 分钟内通过另一个事务 T2 更新此表时。我遇到了一个例外:-
11:58:38,584 ERROR [STDERR] java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1124)
11:58:38,584 ERROR [STDERR] at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:676)
请为我提供解决方案,如何在不出现此异常的情况下执行此交易 T2?
更新mysql数据库中innodb_lock_wait_timeout的值来解决这个异常是否正确。我期待为这个问题找到任何有用的解决方案。