作家
登录

MySQL数据库的“十宗罪”(附10大经典错误案例)

作者: 来源: 2017-09-01 09:50:24 阅读 我要评论

 to avoid this problem. 
  •  
  • org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session 
  •  
  • org.hibernate.exception.JDBCConnectionException: Could not execute JDBC batch update 
  •  
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state. 
  •  
  • org.hibernate.util.JDBCExceptionReporter - SQL Error:0, SQLState: 08003 
  •  
  • org.hibernate.util.JDBCExceptionReporter - No operations allowed after connection closed. Connection was implicitly closed due to underlying exception/error: 
  •  
  •  ** BEGIN NESTED EXCEPTION **  
  • 大年夜多半做 DBA 的同窗,可能都邑被开辟人员告诉,你们的数据库报了这个缺点了,赶紧看看是哪狼9依υ?题。

    这个问题是由两个参数影响的,wait_timeout 和 interactive_timeout。

    数据默认的设备时光是 28800(8小时)意味着,跨越这个时光之后,MySQL 数据库为了节俭资本,就会在数据库端断开这个连接,MySQL 办事器端将其断开了,然则我们的法度榜样再次应用这个连接时没有做任何断定,所以就挂了。

    解决思路:先要懂得这两个参数的特点,这两个参数必须同时设置,并且必须要包管值一致才可以。

    我们可以恰当加大年夜这个值,8 小时太长了,不实用于临盆情况。因为一个连接长时光不工作,还占用我们的连接数,会消费我们的体系资本。

    解决办法:可以恰当在法度榜样中做断定,强烈建议在操作停止时更改应用法度榜样逻辑以精确封闭连接,然后设置一个比较合理的 timeout 的值(根据营业情况来断定)。

    然则如许操作就可以;

    案例十

    can’t open file (errno:24)

    有的时刻,数据库跑得好好的,忽然报不克不及打开数据库文件的缺点了。

    解决思路:起首我们要先查看数据库的 error log。然后断定是表破坏,照样权限问题。还有可能磁盘空间不足导致的不克不及正常拜访表;操作体系的限制也要存眷下;用 perror 对象查看具体缺点!

    /usr/local/mysql/bin/mysqlbinlog –no-defaults -v -v –base64-output=decode-rows /data/mysql/mysql-bin.000014 |grep -A 10 1708 > 1.log

    问题还原:

    1. linux:/usr/local/mysql/bin # ./perror 24 
    2. OS error code  24:  Too many open files  

    超出最大年夜打开文件数限制!ulimit -n 查看体系的最大年夜打开文件数是 65535,弗成能超出!那必定是数据库的最大年夜打开文件数超出限制!

    在 MySQL 里查看最大年夜打开文件数限制敕令:show variables like ‘open_files_limit’;

    发明该数值过小,改为 2048,重启 MySQL,应用正常。

    处理办法:

    repair table ;

    chown mysql 权限

    清理磁盘中的垃圾数据

    往后还会持续总结 MySQL 中的各类报错处理思路与办法,欲望跟各位老铁们,同窗们一路尽力。多沟通多交换!

    【编辑推荐】

    1. 若何懂得并精确应用MySQL索引
    2. MySQL的两阶段加锁协定
    3. 【MySQL标记】七种JOIN的SQL
    4. 一次Mysql改表激发LVS下RS机械全下线的问题
    5. 青铜到王者,快速晋升你MySQL数据库的段位!
    【义务编辑:庞桂玉 TEL:(010)68476606】

      推荐阅读

      攻击与响应:云原生网络安全与虚拟机安全

    云原生工作负载和容器本质上是不合的。人们须要懂得若何保持安然,起重要懂得赓续变更的威逼性质。那么哪个更安然:虚拟机(VM)照样容器?事实是,确保容器和云原生工作负载的安然与虚拟机不>>>详细阅读


    本文标题:MySQL数据库的“十宗罪”(附10大经典错误案例)

    地址:http://www.17bianji.com/lsqh/37079.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)