• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在线DDL失败情况

    联机DDL操作失败通常是由于以下情况之一:

    • 一个ALGORITHM子句指定的算法是不与特定类型的DDL操作或存储引擎的兼容。
    • LOCK子句指定低程度的锁定(的SHAREDNONE),其不与特定类型的DDL操作兼容。
    • 等待表上的排他锁时发生超时,这可能在DDL操作的初始阶段和最终阶段短暂需要。
    • tmpdirinnodb_tmpdir文件系统运行的磁盘空间,而MySQL索引的创建过程中,在磁盘上写入临时排序文件。有关更多信息,请参见“在线DDL空间要求”。
    • 该操作花费很长时间,并且并行DML修改表的程度很大,以至于临时联机日志的大小超过了innodb_online_alter_log_max_size配置选项的值。这种情况会导致DB_ONLINE_LOG_TOO_BIG错误。
    • 并发DML对表进行了更改,原始表定义允许更改,但新表定义不允许。当MySQL尝试应用并发DML语句中的所有更改时,操作仅在最后失败。例如,您可以在创建唯一索引时将重复的值插入到列中,或者可以NULL在该列上创建主键索引时将值插入到列中。并发DML所做的更改具有优先权,并且该ALTER TABLE操作有效地回滚了。