MySQL 5.7版本说明
在线DDL操作的失败通常是由于以下情况之一:
一个
算法
子句指定了与特定类型的DDL操作或存储引擎不兼容的算法。一个
锁
子句指定较低的锁定程度(共享
或没有一个
),它与特定类型的DDL操作不兼容。类时发生超时独占锁在DDL操作的初始阶段和最后阶段可能会短暂地需要。
的
tmpdir
或innodb_tmpdir
文件系统将耗尽磁盘空间,而MySQL在创建索引时将临时排序文件写入磁盘。有关更多信息,请参见第14.13.3节“在线DDL空间要求”.操作时间较长,并发DML修改表过多,导致临时在线日志大小超过
innodb_online_alter_log_max_size
配置选项。此条件将导致DB_ONLINE_LOG_TOO_BIG
错误。并发DML对表进行更改,这些更改在原始表定义中是允许的,但在新表定义中是不允许的。该操作只在最后失败,这时MySQL试图应用来自并发DML语句的所有更改。例如,您可以在创建惟一索引时将重复的值插入到列中,或者您可以插入
零
属性时,将值放入列中主键索引。并发DML所做的更改优先,而ALTER TABLE
操作有效回滚.