• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql 1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题_MySQL

mysql 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

gaodaima.com

最近在做一个项目,其中一需求是:部分数据库中的数据需要定时删除掉(满足一定条件,比如7天前的数据都不保留)

最初的执行方法:

使用Quartz定时执行数据库操作,进行数据删除,数据库操作使用delete语句

最开始数据少的时候,没有问题,后来随着数据量变大,执行这个任务后台就报错了,具体错误信息是:

1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题

google了一把,大家给出的解决方法

第一种

查看 max_write_lock_count 和 innodb_buffer_pool_size参数的值,修改 innodb_buffer_pool_size的值,增大到符合需求,关于值设置可以参考http://wangwei007.blog.51cto.com/68019/967278默认值如下:

第二种:

让用Limit来限制每次写的行数,但是我在代码中已经做了,所以这个应该是解决不了我的问题。 实践证明:使用delete来删除较大数据是不靠谱的,最后修改实现方

本文来源gaodai.ma#com搞#代!码(网

法,达到删除的目的。创建存储过程,存储过程执行步骤:1)创建一个表结构和目标表结构相同的备份表,数据选择目标表中需要保留的(及不满足删除条件的)2)执行 truncate 命令,将目标表清空3)把步骤 1)中准备好的备份表数据全部导入到空的目标表中 通过上面这个存储过程,顺利完成了目标需求,每天稳定执行删除记录任务。 再回到最初的问题:1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) mysql报的这个错误,从mysql官网上,可以看到对于这个错误类型的解释:

错误:1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL)

消息:总的锁定数超出了锁定表的大小。

mysql的表什么时候会被锁,被锁的处理应该是怎么样的,还要继续研究。。。。

参考:http://www.gosoa.com.cn/mysql-%E9%94%81%E8%A1%A8%E6%9C%BA%E5%88%B6%E5%88%86%E6%9E%90

gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql 1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址