1

我正在使用 MySql 5.5,查询是通过 Jboss 5.1 上的 Spring Framework(JdbcTemplate) 执行的

我遇到了一个问题,导致更新语句抛出以下内容:

javax.ejb.EJBTransactionRolledbackException: PreparedStatementCallback; uncategorized SQLException for SQL [ UPDATE events SET last_update=?  WHERE  account_id=? ]; SQL state [HY000]; error
     code [1032]; Can't find record in 'events'; nested exception is java.sql.SQLException: Can't find record in 'events
'

我的问题是为什么在找不到记录时会出现异常(这是预期的行为)以及如何防止这种情况发生。

非常感谢

亚尼夫

更多细节

该表没有外键。它总共有 15 个字段,其中 on 是一个自动增量 id,另外 4 个被索引。查询是`UPDATE events SET last_update=? 在哪里 account_id=?

这也是实际 SQLException 的堆栈跟踪:

Caused by: java.sql.SQLException: Can't find record in 'events'
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:365)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:818)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:1)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
4

0 回答 0