MySQL 8.3 Release Notes
TRUNCATE TABLE
通常被视为DML语句,因此在二进制日志模式为 ROW
或 MIXED
时,应该被记录和复制为基于行的格式。但是,这在 STATEMENT
或 MIXED
模式下记录或复制时,会出现问题,例如使用事务存储引擎的表,如 InnoDB
,当事务隔离级别为 READ COMMITTED
或 READ UNCOMMITTED
时,不允许基于语句的日志记录。
TRUNCATE TABLE
在日志记录和复制中被视为DDL语句,而不是DML语句,以便可以作为语句被记录和复制。然而,对于 InnoDB
和其他事务表在副本上的效果仍然遵循 第 15.1.37 节“TRUNCATE TABLE语句” 中描述的规则,适用于这些表。(Bug #36763)