MySQL 8.4 Release Notes
17.12.7 在线 DDL 失败情况
在线 DDL 操作失败通常是由于以下条件之一:
-
指定的算法
ALGORITHM
与特定的 DDL 操作或存储引擎不兼容。 -
指定的锁定级别
LOCK
为低级别(SHARED
或NONE
),与特定的 DDL 操作不兼容。 -
在等待表的独占锁定
exclusive lock时超时,可能需要在 DDL 操作的初始和最终阶段短暂地获取该锁定。
-
文件系统
tmpdir
或innodb_tmpdir
运行出磁盘空间不足,MySQL 在创建索引时将临时排序文件写入磁盘。更多信息,请参见第17.12.3节,“在线 DDL 空间要求”。 -
操作时间太长,.concurrent DML 修改表,使得临时在线日志的大小超过
innodb_online_alter_log_max_size
配置选项的值。这将导致DB_ONLINE_LOG_ TOO_BIG
错误。 -
并发DML对表进行了允许原始表定义的更改,但不允许新的表定义。操作直到MySQL尝试应用所有并发DML语句时才会失败。例如,您可能在创建唯一索引时插入重复值到列中,或者在创建主键索引时插入
NULL
值到列中。并发DML所做的更改优先于ALTER TABLE
操作,实际上是回滚的。