(다양한 DB를 쓰다보니, 알게되는 디폴트 isolation level은 저 멀리..., mysql 을 그렇게 써놓고도 또 실수하는 것이 나다.. 나같은 실수를 하는 이를 위해서 정리)
play2의 db 설정의 isolation 레벨은 read_committed로 되어 있다.
https://www.playframework.com/documentation/2.0.x/SettingsJDBC
oracle이나 ms sql은 default isolation level이 read committed 라 그냥 사용했다
http://www.dba-oracle.com/t_oracle_isolation_level.htm
http://msdn.microsoft.com/en-us/library/ms175909.aspx
사용하고 있는 DB는 mariadb(mysql) 인데, 아래와 같은 에러가 발생했다.
java.sql.SQLException: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
mysql default isolation level은 repeatable read 라서, 에러가 발생했다.
http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html
mariadb(mysql) play2의 db 설정을 repeatable_read로 수정하니. 정상적으로 작동된다.
db.default.isolation=REPEATABLE_READ
'DB' 카테고리의 다른 글
[mysql] SELECT CONVERT_TZ (0) | 2016.02.03 |
---|---|
[mysql] 소수점 이하 특정 자리수까지 0으로 채우기 (right 0 padding in mysql float) (0) | 2014.12.26 |
[Graph] Titan Graph DB (0) | 2014.09.04 |
[mysql] mysql 버전 가져오기 - shell (0) | 2014.08.25 |
[mariadb/mysqldb]Warning: Using a password on the command line interface can be insecure (0) | 2014.08.20 |