文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  在线 DDL 失败条件

17.12.7 在线 DDL 失败条件

在线 DDL 操作失败通常是由于以下条件之一造成的

  • ALGORITHM 子句指定了一种算法,该算法与特定类型的 DDL 操作或存储引擎不兼容。

  • LOCK 子句指定了一个低级别的锁定(SHAREDNONE),这与特定类型的 DDL 操作不兼容。

  • 在等待对表的排他锁时发生超时,这可能在 DDL 操作的初始阶段和最后阶段短暂地需要。

  • tmpdirinnodb_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 操作实际上被回滚了。