您的位置:永利集团登录网址 > 计算机入门 > MySql8.0后密码认证方式问题[caching永利集团登录网

MySql8.0后密码认证方式问题[caching永利集团登录网

2019-10-05 01:31

以此主题素材日常在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个钟头(2870000秒)就能断开


 

实施方案,消除办法找了多少个

方法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的案由有好八种,下边作者来总计一下。

 

自家本身人的经历

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。

 

先看日志吧,报错的源委和日志的同样:

找到您的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,不应当出标题呀。无解。

头回来后,诉说。头笑而不语,让自家只看,别讲话。

 代码如下

MySql8.0后密码认证方式问题[caching永利集团登录网址-sha2-password]。复制代码

show global variables;

set global wait_timeout = 120;

小结消除了,但大多MySQL server has gone away都与此难点无关了,都有和max_allowed_packet有关了

导入数据库的时候 SQLyog 报错了

Error Code: 2006 – MySQL server has gone away

搜了下,说是max_allowed_packet (MySQL的一个参数)设置的值缺乏大。

那本人改下就行了 嘿嘿

In Windows:

In the MySQL server installation directory,
in my.ini file, add the following line under [mysqld] in SERVER SECTION.

max_allowed_packet = 16M

In Linux:

Copy the my-xxx.cnf file from /usr/share/mysql to /etc as my.cnf

xxx can be small, medium, large, huge … depending on the requirement.

 代码如下

复制代码

$ cp /usr/share/mysql/my-xxx.cnf /etc/my.cnf

In the my.cnf file, change the default
max_allowed_packet = 1M
to
max_allowed_packet = 16M

Save the file and restart MySQL server.

明日导入.sql文件时出现了Error Code: 2005 – MySQL server has gone away错误,原来是导入的sql文件大于系统暗中同意的max_allowed_packet的值,查了不知凡几改换配置文件的,然而并未找到my.cfg文件,修改别的文件不管用,所以平昔动用sql语句来修改:

 代码如下

复制代码

SET GLOBAL  max_allowed_packet=67108864;

就足以了,不是max_allowed_packet越大越好啊,大家可依附本人人状态来安装。

server has gone away就是由于种种原因导致mysql当机了,导致MySQL server has gone away的因由有不菲种,上面笔者来总括一下。...

本文由永利集团登录网址发布于计算机入门,转载请注明出处:MySql8.0后密码认证方式问题[caching永利集团登录网

关键词:

  • 上一篇:没有了
  • 下一篇:没有了