更新时MySQL错误1206

标签 mysql sql

当我尝试更新任何记录时,我在 MySQL 中收到以下错误:ERROR 1206 (HY000): The total number of locks exceeds the lock table size

根据我在 stackoverflow 上找到的所有相关问题,我了解到当 innodb_buffer_pool_size 变量相对于语句影响的记录数设置得太小时会发生此错误。

但是,即使我尝试更新单个记录(甚至零条记录),我也会收到此错误,这让我很困惑。我还应该指出,几个月来我一直在更新这个表上的记录,直到昨天才看到这个错误。即使只更新单个记录,关于什么可能导致此错误的任何想法?

作为引用,我使用的是 MySQL 5.6。当我执行语句时 SHOW VARIABLES LIKE 'innodb_buffer%'; 我得到以下信息:

+------------------------------------+----- ----------+ |变量名 |值(value) | +------------------------------------+---------- -----+ | innodb_buffer_pool_dump_at_shutdown |关 | | innodb_buffer_pool_dump_now |关 | | innodb_buffer_pool_filename | ib_buffer_pool | | innodb_buffer_pool_instances | 8 | | innodb_buffer_pool_load_abort |关 | | innodb_buffer_pool_load_at_startup |关 | | innodb_buffer_pool_load_now |关 | | innodb_buffer_pool_size | 12582912 | +------------------------------------+---------- -----+

非常感谢任何想法!


编辑:我还应该指出,我可以毫无问题地插入记录。我也承认我使用的是 Windows。


编辑 2:看起来增加 innodb_buffer_pool_size 起到了作用。然而,该解决方案违背了 stackoverflow 上其他地方的普遍智慧,即可以简单地限制查询中访问的记录数(因为我只尝试更新单个记录)。

最佳答案

在阅读了所有与此 Mysql 错误相关的帖子后,解决它的方法是 将 innodb_buffer_pool_size 增加到 16106127360

希望能帮助到别人;)

关于更新时MySQL错误1206,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35160839/

相关文章:

php - AJAX:如何在按下 "Enter"后让按钮提交?

php - MySQL 准备好的语句无法正常工作

c# - 将 DateTime.Ticks 值转换为 SQL 日期的 MySQL 脚本

sql - 区分列并在 postgres 中查找过去几个月的总和

sql - mysql递归?

JOIN 中的 MySQL LIMIT

mysql - MYSQL中可以实现组函数的嵌套吗?

python - 为什么 SQLAlchemy/mysql 总是超时?

c# - LinqToSQL 定义对象标识的成员不能更改

sql - 完整性错误 : foreign key violation upon delete