TRUNCATE
is normally regarded as
a DML statement, and so would be expected to be logged and
replicated using row-based format when the binary logging mode
is ROW
or MIXED
. However
this caused issues when logging or replicating, in
STATEMENT
or MIXED
mode,
tables that used transactional storage engines such as
InnoDB
when the transaction
isolation level was READ COMMITTED
or
READ UNCOMMITTED
, which precludes
statement-based logging.
Beginning with MySQL 5.1.32,
TRUNCATE
is treated for purposes
of logging and replication as DDL rather than DML so that it can
be logged and replicated as a statement. However, the effects of
the statement as applicable to
InnoDB
and other transactional
tables on replication slaves still follow the rules described in
Section 12.2.10, “TRUNCATE
Syntax” governing such tables. (Bug#36763)
User Comments
Add your own comment.