MySQL 9.0 发行说明
在线 DDL 操作失败通常是由于以下条件之一:
ALGORITHM子句指定了与特定类型的 DDL 操作或存储引擎不兼容的算法。LOCK子句指定了与特定类型的 DDL 操作不兼容的低锁定级别 (SHARED或NONE)。在等待对表的 排他锁 时超时,这在 DDL 操作的初始阶段和最后阶段可能需要短暂的时间。
tmpdir或innodb_tmpdir文件系统在 MySQL 在磁盘上写入临时排序文件以创建索引时,用尽了磁盘空间。有关更多信息,请参见 第 17.12.3 节,“在线 DDL 空间需求”。操作需要很长时间,而并发 DML 对表进行了大量修改,以至于临时在线日志的大小超过了
innodb_online_alter_log_max_size配置选项的值。这种情况会导致DB_ONLINE_LOG_TOO_BIG错误。并发 DML 对表的更改在原始表定义中是允许的,但在新的表定义中是不允许的。操作仅在最后失败,当 MySQL 尝试应用并发 DML 语句的所有更改时。例如,您可能在创建唯一索引时将重复值插入列中,或者在创建对该列的 主键 索引时,将
NULL值插入列中。并发 DML 做出的更改优先,ALTER TABLE操作实际上已 回滚。