关于错误"MySQL server has gone away"

    最近在做一个爬虫程序,是对一个网站的全站数据收集。程序调好后跑了一晚上,第二天来看就出现了“MySQL server has gone away”的错误, 调了半天以为是程序哪里的逻辑没对,写了单元测试也是通过的。。百思不得其解。

后来网上一搜才知道了原因

一般有两种情况会导致"MySQL server has gone away"的错误

1.mysql实例化后长时间没有对其操作,造成超时。

2.执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段

 

我在爬虫的主程序就首先就初始化了mysql连接,但是之后都是在对网页就行解析,解析的内容到最后才存入数据库,但是到了网站解析完准备入库的时候,已经到了mysql的超时时间了,所以就出现了"MySQL server has gone away"的错误。

在这这情况下,有几种解决方案。

一,优化程序,要嘛边搜集网页边入库,要嘛等待所有的网页搜集完后,再初始化mysql,这样就不会碰到超时的情况。

二,在配置文件my.ini中修改mysql的超时时间和缓存长度。

wait_timeout=2880000 ( 最大等待时间 )
interactive_timeout=2880000 (语句执行间断时间 )

max_allowed_packet=10M(缓存大小)

当然也可以通过sql语句来设置

 

'set global interactive_timeout = 2880000'
'set global wait_timeout = 288000'     
'set global max_allowed_packet = 2880000'
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值