TRUNCATE TABLE
は通常は DML ステートメントと見なされるため、バイナリロギングモードが ROW
または MIXED
のときは行ベース形式を使用してログが記録されて複製されることが予想されます。 しかしこのことが、InnoDB
などのトランザクションストレージエンジン (トランザクション分離レベルが READ COMMITTED
または READ UNCOMMITTED
(ステートメントベースロギングを排除)) を使用するテーブルを STATEMENT
または MIXED
モードでログを記録または複製するときに、問題を発生させました。
TRUNCATE TABLE
は、ロギングおよびレプリケーション目的のときはステートメントとしてログを記録し複製できるように、DML ではなく DDL として扱われます。 ただし、レプリカに対する InnoDB
および他のトランザクションテーブルに適用可能なステートメントの影響は、そのようなテーブルを制御する セクション13.1.37「TRUNCATE TABLE ステートメント」 で説明されているルールに従います。 (Bug #36763)