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

最初的执行方法:

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

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

1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题

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

第一种

查看 max_write_lock_count 和 innodb_buffer_pool_size参数的值,修改 innodb_buffer_pool_size的值,增大到符合需求,关于值设置可以参考

默认值如下:
 

第二种:

让用Limit来限制每次写的行数,但是我在代码中已经做了,所以这个应该是解决不了我的问题。
 
实践证明:使用delete来删除较大数据是不靠谱的,最后修改实现方法,达到删除的目的。
创建存储过程,存储过程执行步骤:
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

【mysql】1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题的更多相关文章

  1. SQLSTATE[HY000] [2003] Cant connect to MySQL server

    今天要连远程数据库,结果PHP报错 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003 ...

  2. PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2)

    如下所示,PHP连接MySQL报错: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' ...

  3. bugfree,CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.0.99' (4)

    安装bugfree后,访问报错:CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '19 ...

  4. SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)   这个 ...

  5. SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13)

    SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13) 我可以真见识了 SELinux 的利害了, 这个问题让我找了好长时 ...

  6. YII 框架在 MAC OS下 连接数据库失败 提示 DB connection: SQLSTATE[HY000] [2002]

    作者:zccst CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] No such file or dire ...

  7. PHP错误:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

    使用PHP连接MySQL 8的时候,可能会发生如标题所示的错误: SQLSTATE[HY000] [2054] The server requested authentication method u ...

  8. TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory

     连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...

  9. Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory解决方法

    今天用pdo连接mysql遇到一个奇怪的问题,host设为127.0.0.1可以连接成功,设为localhost就会报如下的错误: PHP Fatal error:  Uncaught excepti ...

随机推荐

  1. JavaScript中的一些细节

    1.设置id / class等属性 用 setAttribute 设置一些常规属性如 id ,className 的时候经常不起作用,只能用 object.id = value 这样来设置 news_ ...

  2. 磁盘IO性能监控(Linux 和 Windows)

    磁盘IO性能监控(Linux 和 Windows) 作者:终南   <li.zhongnan@hotmail.com> 磁盘的IO性能是衡量计算机总体性能的一个重要指标.Linux提供了i ...

  3. 为什么ASCII是7位(导致各家编码的128~256字符都不同,给我带来很多困惑)——在标准ASCII中,其最高位(b7)用作奇偶校验位,附ASCII每个控制符的中文解释

    ASCII编码 ASCII是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语和其他西欧语言.它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是Amer ...

  4. C语言---类型转换

    itoa 功 能:把一整数转换为字符串 用 法:char *itoa(int value, char *string, int radix); 详细解释:itoa是英文integer to array ...

  5. device tree website

    每一个设备都有相对应的初始化程序,dts的写法可以参照Documentations/devicetree/下面的文档 http://bbs.chinaunix.net/thread-4139331-1 ...

  6. 自定义ScrollViewer的Touch事件--触摸上下移动ScrollViewer滚动到指定位置

    double mPointY;//触摸点的Y坐标 double mOffsetY;//滚动条当前位置 bool mIsTouch = false;//是否触摸 //触摸事件 private void ...

  7. HDU1841——KMP算法

    这个题..需要对KMP的模板理解的比较透彻,以前我也只是会套模板..后来才知道..之会套模板是不行的..如果不能把握模板的每一个细节`,至少能搞清楚模板的每一个模块大体是什么意思.. 题意是给出两个串 ...

  8. java 实现排序

    package com.cjs.sort; /** * 此类用来提供针对整数的各种排序算法 * * @author S * @version 1.0 */ public class MySort { ...

  9. nodejs学习笔记之安装、入门

    由于项目需要,最近开始学习nodejs.在学习过程中,记录一些必要的操作和应该注意的点.       首先是如何安装nodejs环境?(我用的是windows 7环境,所以主要是windows 7的例 ...

  10. js jquery 验证写法

    <?php header("Content-type: text/html; charset=utf-8"); ?> <script src="jque ...