TOOL/DATABASE 2018. 12. 3. 19:53

!markdown


# Java - 자바


## MySQL - 마이에스큐엘


테스트에 별 불편함 없이 써왔었느데.. 자세히보니... 트랜젝션이 안되는 것을 발견했다...


허걱..ㅋㅋ 


처음에는 나의 로직에 문제가 있구나 생각하고 고군분투하였는데, 도무지 rollback이 안되는 원인을 알 수 없었다.


검색하여 몇가지 정보를 얻었고, 5.5 이하 버전에서는 안된단다...


트랜젝션(Transaction)이 없는 데이터베이스라니.. 예전 버전에는 그랬었구나..




### Problem - 문제


`mysql-connector-java-5.1.35.jar`을 이용하여 JDBC작업을 하고 있는데, 이상하게 rollback()이 되지 않았다.


오래전에 호스팅했던 cafe24에서 주는 MySQL을 쓰고 있는데 버전이 5.5 아래인 것 같다.




### Why - 원인


MySQL 5.5 버전 이하는 `MyISAM` 이라는 엔진을 사용하였는데, 트랜젝션이 없다는 것이 가장 큰 단점이었다고 한다.




### Solved - 해결


5.5 버전 이하에서는 트랜젝션이 안 된다.

5.5 이후 부터는 보완이 되었다고 하니, 버전을 올리던지, 다른 데이터베이스를 쓰던지, 포기하던지 하면 된다.




### Reference - 참조


- autocomit and rollback problems with MySQL: [https://community.oracle.com/thread/1324151](https://community.oracle.com/thread/1324151)


- MyISAM: [https://ko.wikipedia.org/wiki/MyISAM](https://ko.wikipedia.org/wiki/MyISAM)