先简单介绍一下这个新手卡录入后台,下增加一

以此主题素材普通在laravel中展现为周围下面的充足:

ThinkPHP出现General error: 二〇〇五 MySQL server has gone away的减轻方式,thinkphpgeneral

错误:

#13 {main}SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
FILE: ThinkPHPLibraryThinkDbDriver.class.php(169)


 

缘由分析:

此番错误提示是在cli情势运作,隔后生可畏段时间就能够并发,查询资料后发觉mysql暗中认可没隔8个小时(28七千0秒)就能够断开


 

焚林而猎方案,化解措施找了多少个

方法1

  配置mysql.cnf(windows系统则是my.ini),内定wait_timeout和interactive_timeout,设置三个一点都比相当大的值,比如一年(86400*365)。

方法2

  链接后通超过实际行命令来钦命这一次链接的wait_timeout和interactive_timeout,原理跟【1】同样,只可是这种办法只影响本次链接,情势【1】会影响全体链接。

  可是thinkphp已经封装好了数据库驱动,所以倒霉单独内定某三遍。笔者的做法是剖断php_sapi,如果是cli则设置wait_timeout和interactive_timeout

// ThinkPHPLibraryThinkDbDriver.class.php 第 105行
if(PHP_SAPI == 'cli'){
     $query = $this->linkID[$linkNum]->prepare("set session wait_timeout=31536000,interactive_timeout=31536000,net_read_timeout=10000");
     $query->execute();
}

方法3

必威,既是是晚点断开了,那大家就能够运用断线重连的主意

// ThinkPHPLibraryThinkDbDriver.class.php 第 105行

$this->linkID[$linkNum]->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->linkID[$linkNum]->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$this->linkID[$linkNum]->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// ThinkPHPLibraryThinkDbDriver.class.php 第159行(query方法) 和 220行(execute方法)
try {
            $this->PDOStatement = $this->_linkID->prepare($str);
        } catch (PDOException $e) {
            // 断线重连
            if ($e->errorInfo[1] == 2006 || $e->errorInfo[1] == 2013) {
                echo "---> db reconnecting...n";
                $this->linkID = array();
                $this -> _linkID = null;
                $this->initConnect(false);
                $this->PDOStatement = $this->_linkID->prepare($str);
            }
        }

 

error: 贰零零陆 MySQL server has gone away的消除方法,thinkphpgeneral 错误: #13 {main}SQLSTATE[HY000]: General error: 2006 MySQL server has gone away FI...

即使我们单看mysql提醒MySQL server has gone away正是由于各个原因导致mysql当机了,导致MySQL server has gone away的缘故有广大种,下边作者来计算一下。

Python pandas ERROR 2006 (HY000): MySQL server has gone away,pandashy000

事先在做python pandas大额分析的时候,在将剖析后的数额存入mysql的时候报E奇骏RO科雷傲 2006(HY000): MySQL server has gone away

案由解析:在对百万多少举办深入分析的时候,由于剖析逻辑有一些复杂,导致消耗的时候某些多,触发了mysql connect_timeout机制,当分析结束后想把结果存入mysql的时候,连接早就经断开了。

消除方案:针对有的复杂的多寡深入分析,将数据分片管理,并在每一回实施mysql插入的时等候法庭判果决连接是或不是断开(connection.ping(True)),若断开则再一次创造连接。关于分片能够动用python dask进行并发总结

pandas ERAV4ROEvoque 二〇〇七 (HY000): MySQL server has gone away,pandashy000 在此以前在做python pandas大数据深入分析的时候,在将剖析后的数量存入mysql的时候报E凯雷德RO奥迪Q7...

“MySQL server has gone away”的重现方法(PHP)

 

作者要好人的经历

 

local.ERROR: SQLSTATE[HY000] [2006] MySQL server has gone away {"exception":"[object] (PDOException(code: 2006): SQLSTATE[HY000] [2006] MySQL server has gone away at...

先简要介绍一下那么些新手卡录入后台,那一个后台是提供给产品职员采用。能够向有些游戏的有个别特定分区批量录入菜鸟卡音信,方便游戏的使用者获取。后台装置的一遍性最大录入量为500。

只要想调节和测量检验“MySQL server has gone away”的主题素材,能够那样再现:

 

先看日志吧,报错的内容和日志的如出如日方升辙:

 

找到你的my.cnf,在[mysqld]下增添风流倜傥行

Error: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

修改配置文件:

 1 default-authentication-plugin=mysql_native_password 

以此错误音讯很好的描述了是数据库超时引起的。以前听长辈说过,应该是wait_timeout情况变量设置的有失水准。可是查看后,开掘wait_timeout设的好高啊,为28800,不应有出难题呀。无解。

 

头回来后,诉说。头笑而不语,让自个儿只看,不要说话。

[html] 

 代码如下

sudo vi /etc/mysql/my.cnf  

复制代码

 

show global variables;

做如下修改:

set global wait_timeout = 120;

[html] 

总计化解了,但过多MySQL server has gone away都与此难点非亲非故了,皆有和max_allowed_packet有关了

[mysqld]  

本文由必威发布于必威-数据,转载请注明出处:先简单介绍一下这个新手卡录入后台,下增加一

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。