제목에 다 적을 수 없었던 경고의 풀 메시지는 -
[Waring] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT=STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. Statement: DELETE FROM logs_count ORDER BY L_ID LIMIT 1
위 메시지가 /var/log/mariadb/mariadb.log 안에서 계속 쌓이는 상황.
로그 문 안에 어떤 쿼리가 경고를 발생하는지 알 수 있어서 바로 조치가 가능.
관련 해결 글을 찾아보니 'binlog_format' 을 변경하라고 함.
SET SESSION binlog_format=MIXED;
DELETE FROM logs_count ORDER BY L_ID LIMIT 1;
SET SESSION binlog_format=STATEMENT;
순서로 쿼리 처리하면 될 듯 함.
※ 어느 포스트에서는 MIXED 말고 ROW 값을 줘서 해결을 했다고 하는데 ROW 값을 줘보진 않음.
실제 Java 코드에서는 참고로
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ... String pre_query = "SET SESSION binlog_format=MIXED"; String post_query = "SET SESSION binlog_format=STATEMENT"; String query = "DELETE FROM logs_count ORDER BY L_ID LIMIT 1"; try { con = DriverManager.getConnection(url, uID, uPWD); pstmt = con.prepareStatement(pre_query); rs = pstmt.executeQuery(); pstmt = con.prepareStatement(query); rs = pstmt.executeQuery(); pstmt = con.prepareStatement(post_query); rs = pstmt.executeQuery(); } catch(...) {...} ... | cs |
각 설정 값들이 무엇을 의미하는지는 링크를 참조하면 될 듯.