MySQL 8.4 发行说明
TRUNCATE TABLE
通常被认为是 DML 语句,因此当二进制日志记录模式为 ROW
或 MIXED
时,预期会使用基于行的格式记录和复制它。但是,这在使用事务性存储引擎(例如 InnoDB
)且事务隔离级别为 READ COMMITTED
或 READ UNCOMMITTED
的表在 STATEMENT
或 MIXED
模式下进行日志记录或复制时会引发问题,因为这会阻止基于语句的日志记录。
为了日志记录和复制的目的,TRUNCATE TABLE
被视为 DDL 而不是 DML,以便可以将其作为语句进行日志记录和复制。但是,该语句对副本上的 InnoDB
和其他事务性表的影响仍然遵循 第 15.1.37 节,“TRUNCATE TABLE 语句” 中关于此类表的规则。(错误 #36763)