(已解决)MySQLdb连接错误(2013, “Lost connection to MySQL server at ‘handshake)||代理

7 篇文章 0 订阅

MySQLdb._exceptions.OperationalError: (2013, “Lost connection to MySQL server at ‘handshake: reading inital communication packet’, system error: 0”)

在这里插入图片描述

连接初始化阶段就丢失了连接。

因为配置文件my.cnf默认没有为远程连接配置好。

当WEB服务器负载高的时候,经常会出现这种错误,

原因:

MySQL默认connect_timeout是5秒,超过了这个时间MySQL的server端就会返回“Bad handshake”。

  • 解决方案一

1.大多数时候设置"set global connect_timeout=60;"是可以解决问题的;

我们可以通过执行“SHOWSTATUS LIKE ‘aborted%’”,可以观察到
Variable_name Value
Aborted_clients 6
Aborted_connects 15010
觉得是否要增加connect_timeout的时间,“Aborted_connects"将会随着服务端放弃客户端初始连接而增加。如果"Aborted_connects"很大,并且不断增加,就需要增加"connect_timeout”.

2.在MySQL的配置文件中[mysqld]添加"skip-name-resolve",减少域名解析的时间

3.部署服务器端的网络要好,至少大于100Mbps/s

4.如果是在调用mysql_query的时候出现的问题,那就需要把"net_read_timeout"的时间调成30秒,或者60秒,或者更大的值

5.如果还不能解决问题,那估计是你的SQL语句中含有BLOB这种大类型,我们就需要增加"max_allowed_packet"的值了

  • 解决方案二

方案一是网络上给出的解决方案,对我的问题不起作用。

后来发现,又是Proxifier代理问题,因为PyCharm通过Proxifier代理。

MySql与PyCharm都通过代理,会出错;

MySql不代理,PyCharm经过代理,也会出错;

两者都不采用代理就不会出错了。

不过这样导致一个问题,如果爬取的是外网资料,不经过代理就无法爬取,经过代理就无法存储,关于MySql与代理之间的关系,后续再详细研究,目前只能先代理后爬取并存储在本地,然后断开代理,从本地读取再存储到MySQL。

  • Reference

  1. MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
  2. 手把手解决Mysql错误:Lost connection to MySQL server at ‘reading authorization packet’, system error: 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值