2012-02-12 2 views
0

문제가 있습니다.MySQL 커밋 및 롤백 실패

try {     
    jdbcConnect(); //get mysql connect 
    conn.setAutoCommit(false); 

    pstmt = conn.prepareStatement ( 
        "INSERT INTO member (member_name, member_introduce) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS); 

    pstmt.setString(1, "something"); 
    pstmt.setString(2, "something"); 
    pstmt.executeUpdate(); 
    rs = pstmt.getGeneratedKeys(); 
    rs.next(); 
    String no = Integer.toString(rs.getInt(1); 

    pstmt = conn.prepareStatement ("UPDATE account SET account_name = ? WHERE account_no = ?"); 
    pstmt.setString(1, "something"); 
    pstmt.setString(2, no); 
    pstmt.executeUpdate(); 

    conn.commit();   
    conn.setAutoCommit(true); 

} catch (SQLException t) {    
    try { 
     if (conn != null) { 
      conn.rollback(); 
      conn.setAutoCommit(true); 
     } 
    } catch (SQLException e) { 
    } 
}//close conn and prepareStatement 

저는 작업 커밋을 기대했습니다.

하지만 오류가 발생하면 update 문은 insert 문이 실행 중입니다.

무엇이 잘못 되었나요?

답변

4

InnoDB 대신 MyISAM 테이블을 사용하고 있다고 생각합니다. MyISAM은 트랜잭션을 전혀 지원하지 않습니다.

+0

감사합니다. @jdevelop – blim

+0

spot on. 이것은 내 문제였다. – Sonny

관련 문제