最近在做一个爬虫程序,是对一个网站的全站数据收集。程序调好后跑了一晚上,第二天来看就出现了“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'
分享到:
相关推荐
MySQL导入sql脚本错误:2006 – MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 Error Code: 2006 - MySQL ...
MySQL Server has gone away 是一个常见的错误提示,通常出现在MySQL服务器与客户端应用之间的连接中断时。这个错误可能由多种原因引起,包括超时、数据包过大或资源耗尽等。下面我们将详细探讨这些原因以及相应的...
在我们使用mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功。该项的作用是限制mysql服务端接收到的包...
在 Gearman 中,worker 运行在常驻后台模式,可能会遇到一个问题,即与 MySQL 数据库的连接在处理任务过程中因“MySQL server has gone away”而中断。这通常是由于多种原因造成的,包括 MySQL 服务宕机、超时、请求...
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 ...
MYSQL server has gone away 引起这个原因是不可怕的.原因是更改了系统的断开时间. mysql>show gloable variables like “%timeout%”; 进行查看 interactive_timeout 的黓认值为28800 wait_timeout 的默认值这:...
在IT领域,尤其是在数据库管理与优化方面,对MySQL进行精细调节和优化是提升系统性能、保障数据处理效率的关键。以下是对“101个MySQL的调节和优化方法”这一主题的深入解析,涵盖从硬件配置到软件参数设置,以及...
本文将详细讨论两个常见的错误:“MySQL server has gone away”和“Can't connect to [local] MySQL server”。 首先,让我们关注“MySQL server has gone away”错误。这个错误通常意味着服务器在执行查询时超时...
若导入时报错,ERROR 2006 (HY000):MySQL server has gone away 。我们可以通过语句查看一下允许的最大包大小:show global variables like 'max_allowed_packet'; MySQL使用最大数据包站站点进行服务器和客户端...
Qt5.4下连接Mysql,QSqlDatabase: QMYSQL driver not loaded but available-附件资源
1. MySQL Server Has Gone Away 错误 这个错误通常表示MySQL服务器由于某种原因关闭了与客户端的连接。默认情况下,服务器会在8小时无活动后自动断开连接。这可以通过设置`wait_timeout`变量在启动mysqld时进行调整...
OperationalError: (2006, ‘MySQL server has gone away’) OperationalError: (2013, ‘Lost connection to MySQL server during query’) 查询mysql全局变量SHOW GLOBAL VARIABLES;可以看到wait_timeout,此变量...