删除MySQL行导致locking表错误

我有几百万行删除,但不能一次删除,没有这个错误

错误1206(HY000):锁的总数超过锁表大小

于是我写了一个脚本,一次删除100,000行。 它运行一次,但是当我第二次运行它时,第一次尝试删除10,000时出现错误。

我试图删除10,000行的方式是使用引用所有200万行的删除语句,但我使用限制子句只影响10,000。

我试过添加一个“解锁表”; 声明到第一次删除脚本之前,但这并没有帮助。 我仍然得到第一次删除锁表错误。

任何想法,我可以做到这一点?

有没有办法我可以告诉它不要lockinglogging? 我可以确保没有别的访问表。

它是InnoDB存储引擎吗?

这个错误意味着MySQL没有足够的空间来存储执行查询所需的所有行锁。 取决于你拥有的RAM,将innodb_buffer_pool_size设置为一个合理的值(256MB,512MB),你可能永远不会遇到这个错误。

使用mysql> show global variables like 'innodb_buffer%';检查默认值mysql> show global variables like 'innodb_buffer%';