私はMySql 5.5を使用しています。クエリはJboss 5.1でSpring Framework(JdbcTemplate)を介して実行されています
update ステートメントが次のメッセージをスローする問題が発生しています。
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 のフィールドがあり、そのうちの 1 つが自動インクリメント ID で、残りの 4 つがインデックス化されています。クエリは `UPDATE events SET last_update=? WHERE 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)