`
zoulc001
  • 浏览: 30280 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

关于错误"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'
 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics