1665 - ステートメントを実行できません:バイナリログへの書き込みが不可能BINLOG_FORMAT =ステートメントと少なくとも1つのテーブルは、ストレージエンジン限定に行ベースのログを使用するため。
InnoDBは、行ロギングをするトランザクション分離レベルは、コミットまたはREAD UNCOMMITTED読み取られるとき制限されます。
環境
Tomcatの6.xの
JDK 1.6
mysql5.5
異常な
クエリJDBCを実行するときに例外がスローされます。
BINLOG_FORMAT = STATEMENTおよび少なくとも1つのテーブルは、ストレージエンジン限らに行ベースのログを使用していますので、バイナリログへの書き込みが不可能:文を実行することはできません。InnoDBは、行ロギングをするトランザクション分離レベルは、コミットまたはREAD UNCOMMITTED読み取られるとき制限されます。
原因と解決策
これは、MySQLが必要です。
ステートメントベースbinloggingは分離レベルでは動作しない
READ UNCOMMITTED、必要なのでCOMMITTED READ
ロックを取ることができません。
Tomcatによると、読み取りがコミットしたときに、トランザクション・レベルを示唆し、例外をスローし、コミットされていない読んbinlogの行形式に設定する必要があります。
これは、限定セットのJavaは、Javaのデフォルトのトランザクションレベルがコミット読み込まれ、binlog_formatのMySQLのデフォルト設定=ステートメント。
混合binlog_formatセット
=混合グローバルbinlog_formatを設定します。
時間が経つにつれて、異常はまだです!
行セット
グローバルbinlog_format =行を設定します。
問題は解決します!
または:
MySQLの>のSET SESSIONのbinlog_format = 'ROW';
MySQLの> GLOBAL binlog_format = 'ROW' を設定します。
注意:手動で変更するな/etc/my.cnf Linuxは、以下の場合:binlog_format =行、MySQLを再起動する必要があります。
https://www.iteye.com/blog/javawangbaofeng-2243306