千家信息网

怎么解决MySQL中的ERROR 1799报错问题

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"怎么解决MySQL中的ERROR 1799报错问题",在日常操作中,相信很多人在怎么解决MySQL中的ERROR 1799报错问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2026年11月01日怎么解决MySQL中的ERROR 1799报错问题

这篇文章主要介绍"怎么解决MySQL中的ERROR 1799报错问题",在日常操作中,相信很多人在怎么解决MySQL中的ERROR 1799报错问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么解决MySQL中的ERROR 1799报错问题"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

【问题描述】:
版本:MySQL 5.6.36 (以上的版本都可能出现)
行为:对某些访问频繁的大表做Online DDL
现象:
ERROR 1799 (HY000): Creating index 'GEN_CLUST_INDEX' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.

比如:

  1. mysql> ALTER TABLE a ENGINE=innodb;

  2. ERROR 1799 (HY000): Creating index 'GEN_CLUST_INDEX' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.


  3. mysql> ALTER TABLE a DROP idx_name;

  4. ERROR 1799 (HY000): Creating index 'idx' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again.

只要是DDL相关的,就可能遇到这样的问题,比如在optimize table时:

  1. mysql> OPTIMIZE TABLE a;

  2. +--------+----------+----------+-------------------------------------------------------------------+

  3. | Table | Op | Msg_type | Msg_text |

  4. +--------+----------+----------+-------------------------------------------------------------------+

  5. | test.a | optimize | note | Table does not support optimize, doing recreate + analyze instead |

  6. | test.a | optimize | error | Creating index 'FTS_DOC_ID_INDEX' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again. |

  7. | test.a | optimize | status | OK |

  8. +--------+----------+----------+-------------------------------------------------------------------+

  9. 2 rows in set (18.13 sec)

虽然optimize对innodb表没什么用,但是仍然会抛出该错误

那么查看一下手册,可以得知:
innodb_online_alter_log_max_size控制在用于在Online DDL操作时的一个临时的日志文件的上限值大小。
该临时的日志文件存储了在DDL时间内,dml操作的记录。这个临时的日志文件依照innodb_sort_buffer_size的值做扩展。
如果该日志超过了innodb_online_alter_log_max_size的最大上限,DDL操作则会抛出失败,并且回滚所有未提交的DML操作。
反过来说,该值如果设置更高,则可以允许在做Online DDL时,有更多的DML操作发生。
但因此带来的问题就是,在DDL做完之后,需要更多时间来锁表和应用这些日志。


另外对于某些DDL操作,比如
ADD INDEX/COLUMN,则可以通过调整innodb_sort_buffer_size的大小来加快操作速度。
但是实际上分配的内存为3倍的innodb_sort_buffer_size值。

innodb_online_alter_log_max_size和innodb_sort_buffer_size均为5.6 Online DDL的新参数。

【解决方案】:

知道这个参数控制的是什么东西,就好解决了。
临时调大该值,此处改成了256MB:

  1. mysql> SET GLOBAL innodb_online_alter_log_max_size=256*1024*1024;

  2. Query OK, 0 rows affected (0.03 sec)

该值默认为128MB,还是建议在做完DDL之后再将其改为默认值,也就是134217728。

到此,关于"怎么解决MySQL中的ERROR 1799报错问题"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

问题 日志 更多 学习 文件 参数 大小 时间 版本 帮助 控制 实用 最大 频繁 接下来 没什么 上限 东西 也就是 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 伟宏互联网科技 互联网科技公司税收优惠 盈实互联网科技 互联网科技未来 科技制造互联网公司 互联网金融 科技金融 互联网 卓越科技 礼当家互联网科技 健康食品互联网创新科技园项目 上海科技产业互联网平台 山东子淼互联网科技有限公司 南通创西澳互联网科技有限公司 广州百诚互联网科技有限公司官网 半导体是互联网高科技吗 本届互联网大会上的黑科技 唯美互联网科技 上海万顺科技互联网有限公司招聘 互联网科技的前景 科技互联网企业在行动 互联网科技有限公司图片 新华互联网科技校企合作 互联网和高科技公司 随着互联网科技发展 速维有品互联网信息科技(苏州)有限公司 燊美集互联网科技有限公司 明优互联网科技有限公司 广州有谷有贝互联网科技有限公司 互联网科技品牌 东风日产互联网科技公司叫什么
0