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)