Dil*_*eep 17 java mysql hibernate
java.sql.SQLException: Lock wait timeout exceeded; try restarting tra
nsaction at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2077)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
2228)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:
208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lo
ader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
... 131 more
Run Code Online (Sandbox Code Playgroud)
当我更新记录时,我正在重复锁定超时超出异常.
我正在使用Java Struts 2.1 Hibernate配置.DB Used是MYSQL.
任何人都知道如何解决它.. ??
这也可能是由于滥用以下注释引起的,就像在这篇StackOverflow 文章中一样:
@Transactional(propagation = Propagation.REQUIRES_NEW)
Run Code Online (Sandbox Code Playgroud)
小智 5
确保数据库表使用InnoDB存储引擎和READ-COMMITTED事务隔离级别.
您可以SELECT @@GLOBAL.tx_isolation, @@tx_isolation;在mysql控制台上查看它.
如果未将其设置为READ-COMMITTED,则必须进行设置.在设置之前确保你在mysql中拥有SUPER权限.
您可以从http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html获取帮助.
通过设置这个我认为你的问题将得到解决.
谢谢.