@ spring에서 jdbc 드라이버를 이용해서 transaction을 적용할 때 해당 테이블의 엔진이 MyISAM인 경우 c.setAutoCommit(false);로 해놓아도 rollback() 호출 이전에 미리 DB에 저장이 되어 커밋이 된다. 해당 테이블의 엔진을 InnoDB로 수정함으로써 이 문제를 해결할 수 있다. 

ALTER TABLE "해당 테이블" ENGINE=InnoDB; 를 통해 해당 테이블의 엔진을 바꿀 수 있다. 모든 테이블 (시스템 테이블이 아닌 것들)을 InnoDB 테이블 형태로 생성하고자 한다면, 서버 옵션 파일의 [mysqld] 섹션에 default-storage-engine=innodb를 추가하기만 하면 된다.

@ mysql 데이터 베이스에 있는 MySQL 시스템 테이블 (user 또는 host)을 InnoDB 타입으로 변환하지 말도록 한다. 시스템 테이블은 항상 MyISAM 타입으로 존재해야 한다.

참조 링크 :

mysql 매뉴얼 -  14.2.6.2. MyISAM 테이블을 InnoDB로 변환하기
http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21867&cat1=14&cat2=422&cat3=440&lang=k

mysql 매뉴얼 -  14.2.4. InnoDB 스타트업 옵션 및 시스템 변수
http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21862&cat1=14&cat2=422&cat3=438&lang=k

MySQL InnoDB Engine 사용 시 반드시 알아야 할 세 가지
http://dev.paran.com/2011/06/10/mysql-innodb-engine-3-tips-you-must-know/

[Fedora 9] MySQL 설정 및 innoDB 설정
http://wiz.pe.kr/444 
Posted by Taoist
,